2011-05-05 20 views
5

estoy tratando de hacer un SelectSingleNode en una XMLDocument utilizando una expresión XPath. Sin embargo, cuando el valor de atributo que estoy buscando contiene varias barras diagonales (/), devuelve nulo.XPath consulta para un atributo que contiene barra diagonal (/)

No puedo encontrar ningún recurso en línea para escapar de la barra inclinada. ¿Alguien sabe una forma de evitar esto? ¿O tengo mi sintaxis mal para hacer coincidir el valor del atributo?

Ejemplo XML

<?xml version="1.0"?> 
    <Root> 
    <Page Path="/brand" /> 
    <Page Path="/brand/armada" /> 
    </Root> 

Esta expresión XPath devuelve el nodo correcto (por ejemplo: la primera en el ejemplo anterior)

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand']"); 

Esta expresión XPath devuelve null

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand/armada']"); 

Estoy en un entorno C#, .net 3.5.

EDIT: Gracias por las respuestas. Resolví el problema usando una doble barra diagonal en la expresión de selección.

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']"); 
+0

Mi aplicación de consola repro mínima da los resultados esperados de ambos XPaths – AakashM

+0

Debe ser un error. O el problema está en cualquier otro lado. XMLspy 2011 sp1 lo corrige con sus expresiones Xpath. – ceving

+4

@chris si ha encontrado la respuesta usted mismo, puede publicar la respuesta a continuación y marcarla como la respuesta aceptada, para que otros puedan beneficiarse. Esto también significará que esta pregunta ya no aparecerá en la sección "Sin respuesta" de SO. Gracias – BMac

Respuesta

0

Gracias por las respuestas. Resolví el problema usando una doble barra diagonal en la expresión de selección.

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']"); 
Cuestiones relacionadas