Ho un documento XML che assomiglia a questo:Stranezze con XDocument, XPath e gli spazi dei nomi
<kmsg xmlns="http://url1" xmlns:env="url1" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://location that does not exist.xsd">
<header>
<env:envelope>
<env:source branch="907" machine="0" password="J123"/>
</env:envelope>
</header>
<body>
<OrderResponse xmlns="urn:schemasbasdaorg:2000:orderResponse:xdr:3.01">
<SomeMoreNodes/>
</OrderResponse>
</body>
non ha alcun schemi disponibili pur avendo spazi dei nomi specificati (sto ricevendo questo da un la fonte esterna non ha quindi alcun controllo). Lo sto analizzando con un XDocument, ma continuo a ottenere valori null per gli elementi non nello spazio dei nomi env. Sto installando il XDocument in questo modo:
XDocument Source = XDocument.Load("Testfile.xml");
XmlNamespaceManager oManager = new XmlNamespaceManager(new NameTable());
oManager.AddNamespace(String.Empty, "http://xml.kerridge.net/k8msg");
oManager.AddNamespace("env", "http://xml.kerridge.net/k8msgEnvelope");
poi cerco di ottenere i valori:?
Source.XPathSelectElement ("// kmsg", oManager)
nullo
? Source.XPathSelectElement ("// header", oManager)
nullo
? Così urce.XPathSelectElement ("// ENV: source", oManager)
Ottiene il nodo correttamente
sto assumendo questo è qualcosa a che fare con me impostare il manager dello spazio dei nomi sbagliato, ma io non riesco a capire come sistemarlo. Qualsiasi aiuto sarebbe grande.
Grazie