Frage

I want to get the value of the element rsm:CIIHExchangedDocument/ram:ID But I have problem with multiple namespaces, and null values (I can not know if requested element exists)

It can be achieved this way:

XElement invoice = XElement.Load(invoiceStream);
XNamespace rsm = invoice.GetNamespaceOfPrefix("rsm");
XNamespace ram = invoice.GetNamespaceOfPrefix("ram");
if ((invoice.Element(rsm + "CIIHExchangedDocument")) != null)
{
    if (invoice.Element(rsm + "CIIHExchangedDocument").Element(ram + "ID") != null)
    {
        string id = invoice.Element(rsm + "CIIHExchangedDocument").Element(ram + "ID").Value;
    }
}

but I think using xPath will suit my needs better. I want to do something like this:

invoice.XPathSelectElement("rsm:CIIHExchangedDocument/ram:ID"):

I need to retrieve a lot of elements of different depth in the document, and I have many namespaces.

What is the simplest whay to achive this? Execution speed is also important to me.

War es hilfreich?

Lösung

I believe what you are looking for is the XPathNavigator class. An example of how to use can be found here XpathNaivigator

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top