Mi código no devuelve el nodoXPath no funciona como se desea en C#
XmlDocument xml = new XmlDocument();
xml.InnerXml = text;
XmlNode node_ = xml.SelectSingleNode(node);
return node_.InnerText; // node_ = null !
Estoy bastante seguro de que mi XML y XPath son correctos.
Mi XPath: /ItemLookupResponse/OperationRequest/RequestId
Mi 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>
El nodo de mis declaraciones XPath es siempre nula por alguna razón. ¿Alguien puede ayudar?
@ Nick Brooks: no, si hay un espacio de nombres XML en el elemento raíz, entonces su Los elementos XML a continuación que se encuentran en ese espacio de nombres, y por lo tanto necesita referenciarlos usando ese espacio de nombres. Ese es el objetivo del espacio de nombres XML: poder distinguir elementos XML de potencial del mismo nombre, poniéndolos en espacios de nombres específicos de la aplicación o del proveedor. –
El espacio de nombres se puede agregar así, que es un poco mejor que la codificación dura del espacio de nombres nsmgr.AddNamespace ("x", doc.DocumentElement.NamespaceURI); –
Um, ¿no podemos de alguna manera configurarlo (A) usar automáticamente todos los atributos 'xmlns', o (B) simplemente decirle a .NET que ignore los espacios de nombres y que coincida con lo que literalmente vemos en nuestro archivo XML? Además, ¿de dónde viene la cadena '" x "'? – Qwertie