Mein Code die Knoten nicht zurückXPath funktioniert nicht wie gewünscht in C#
XmlDocument xml = new XmlDocument();
xml.InnerXml = text;
XmlNode node_ = xml.SelectSingleNode(node);
return node_.InnerText; // node_ = null !
Ich bin mir ziemlich sicher, dass meine XML und XPath korrekt ist.
Mein Xpath: /ItemLookupResponse/OperationRequest/RequestId
Meine XML:
<?xml version="1.0"?>
<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<OperationRequest>
<RequestId>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx</RequestId>
<!-- the rest of the xml is irrelevant -->
</OperationRequest>
</ItemLookupResponse>
Der Knoten meine XPath kehrt aus irgendeinem Grund immer null. Kann jemand helfen?
@ Nick Brooks: nein, wenn es ein XML-Namespace auf dem Root-Element, dann Die XML-Elemente darunter befinden sich in diesem Namespace. Daher müssen Sie sie mit diesem Namespace referenzieren. Das ist der springende Punkt im XML-Namespace - XML-Elemente mit dem gleichen Namen unterscheiden zu können, indem sie in anwendungs- oder herstellerspezifische Namespaces eingefügt werden. –
Der Namespace kann so hinzugefügt werden, was etwas besser ist, als den Namespace zu codieren nsmgr.AddNamespace ("x", doc.DocumentElement.NamespaceURI); –
Ähm, können wir es nicht irgendwie einrichten, um entweder (A) automatisch alle 'xmlns' Attribute zu verwenden, oder (B) einfach .NET zu sagen, Namespaces zu ignorieren und das zu finden, was wir buchstäblich in unserer XML-Datei sehen? Wo kommt die Saite '" x "' her? – Qwertie