namespace - xpath xml
XPath en un documento XML con espacio de nombres (3)
Creo que
//anyType[namespace-uri() = "http://www.w3.org/2001/XMLSchema-instance"][local-name() = "type"]
Hará lo que quiera.
Estoy teniendo este documento XML con espacios de nombres y quiero extraer algunos nodos con XPath.
Aquí está el documento:
<ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<anyType xsi:type="Document">
<Id>5</Id>
<Title>T1</Title>
</anyType>
<anyType xsi:type="Document">
<Id>15</Id>
<Title>T15</Title>
</anyType>
</ArrayOfAnyType>
¿Cuál será la expresión XPath si quiero extraer todos los elementos "anyType" con xsi: type = "Document"?
He intentado esto:
//anyType[@xsi:type="Document"]
y no funciona:
Si está utilizando C #, debe especificar el espacio de nombres para el elemento "anyType" en su XPath:
var xml = new XmlDocument();
xml.LoadXml( "your xml" );
var names = new XmlNamespaceManager( xml.NameTable );
names.AddNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
names.AddNamespace( "a", "http://tempuri.org/" );
var nodes = xml.SelectNodes( "//a:anyType[@xsi:type=''Document'']", names );
Tuve casi el mismo problema, olvidé agregar el espacio de nombres correcto para xsi: type ( http://www.w3.org/2001/XMLSchema-instance ) estaba usando http://www.w3.org/2001/XMLSchema y Nunca obtuve ningún resultado, ahora funciona de la siguiente manera:
<xsl:value-of select="/item1/item2/item3/@xsi:type"></xsl:value-of>