2010-11-30 14 views
12

que se pudiera dar a una de las siguientes xml:¿Es posible ignorar los espacios de nombres en C# cuando se utiliza xPath?

<?xml version="1.0" encoding="UTF-8"?> 
<dc:video xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <dc:title> 
    A vid with Pete 
    </dc:title> 
    <dc:description> 
    Petes vid 
    </dc:description> 
    <dc:contributor> 
    Pete 
    </dc:contributor> 
    <dc:subject> 
    Cat 2 
    </dc:subject> 
</dc:video> 

O:

<?xml version="1.0" encoding="UTF-8"?> 
<video> 
    <title> 
    A vid with Pete 
    <title> 
    <description> 
    Petes vid 
    <description> 
    <contributor> 
    Pete 
    <contributor> 
    <subject> 
    Cat 2 
    <subject> 
</video> 

Im tratando de acceder a un elemento:

string title = xmlDocFromOneLan.SelectSingleNode(@"/video/title").InnerXml; 

Pero con el documento XML 1 que no funciona debido al espacio de nombres

¿Hay alguna manera en C# de ignorar el espacio de nombres usando xpath? Simplemente quiero seleccionar el nodo que realmente no me importa sobre el espacio de nombres. (el espacio de nombre podría ser DC DN o DCN, etc.).

"/ video"

diga:

<video></video> 
or 
<dc:video></video> 
or 
<dcn:video></video> 

Respuesta

37

Con XPath 1.0 todo lo que puede hacer es /*[local-name() = 'video']/*[local-name() = 'title']. Con XPath 2.0 puede usar un comodín /*:video/*:title.

+0

Gracias Martin, ¿sabes dónde puedo obtener documentación relacionada con eso? – Exitos

+0

+1 Respuesta correcta. –

+2

Pete, XPath 1.0 y 2.0 son especificaciones W3C que puede encontrar en línea: http://www.w3.org/TR/xpath/, http://www.w3.org/TR/xpath20/. Microsoft solo admite XPath 1.0, tienen documentación sobre eso en MSDN: http://msdn.microsoft.com/en-us/library/ms256115.aspx. XPath 2.0 es implementado por terceros como XQSharp http://www.xqsharp.com/ o Saxon 9 http://saxon.sourceforge.net/. Saxon también tiene una buena documentación, la sintaxis *: foo está documentada en http://www.saxonica.com/documentation/expressions/axissteps.xml. –

Cuestiones relacionadas