2009-09-24 35 views
9

Estoy usando .Net 2.0, y necesito SelectSingleNode desde mi XmlDocument independientemente del espacio de nombres, por mal que suene.SelectSingleNode sin espacio de nombres

ser específico

XmlElement slipType = (XmlElement)document.SelectSingleNode("//Provenance1"); 

establecerá slipType en nulo desde que sé don'l º espacio de nombres está en Provenance1 en el momento de la consulta.

Respuesta

22

puede comprobar el local-name del elemento y hacer caso omiso de espacio de nombres con la siguiente expresión XPath:.

//*[local-name()='Provenance1'] 
+0

Otro ejemplo de complicación de las cosas más simples por los llamados programadores de Microsoft. – TomeeNS

0

Probar:

XmlElement slipType = (XmlElement)document.SelectSingleNode("//*:Provenance1"); 

O:

XmlElement slipType = (XmlElement)document.SelectSingleNode("//@*:Provenance1"); 

de atributos ...

Por desgracia, esta construcción sería sólo funcionan con XPath 2.0, mientras que sólo utiliza .NET XPath 1.0. Yo probé accidentalmente por encima de código con un analizador de 2,0, por lo que no funciona)

+0

Esto arroja una XPathException // *: Provenance1 tiene un token no válido. –

+0

Lo he probado con .NET 3.5, donde también se bloqueó. Sin embargo, es una construcción XPath válida. Lamentablemente para XPath 2.0, que había probado. Pero .NET solo usa XPath 1.0 y es poco probable .NET soportará 2.0 ... –

Cuestiones relacionadas