Mi XPath es un poco oxidado ... Digamos que tengo este simple archivo XML:Cómo filtrar con XPath en todos los elementos sin un atributo específico
<?xml version="1.0" encoding="utf-8" ?>
<States xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<States>
<StateProvince name="ALABAMA" abbrev="AL" />
....
<StateProvince name="AMERICAN SAMOA" abbrev="AS" territory="true" />
</States>
</States>
me gustaría ejecutar una consulta XPath simples para analizar todos los estados verdaderos (por lo tanto, no inserte en estados donde territorio = verdadero). Intenté \ StateProvince [@territory! = 'True'] pero obtuve cero. Otras variaciones parecen estar fallando. Parece que debería ser simple, pero no encuentra lo que quiero.
Cualquier ayuda apreciada.
Especialmente si es nuevo en XPath, debe tener en cuenta las consideraciones planteadas en mi solución: se debe evitar la // abreviación siempre que sea posible, ya que hace que se escanee todo el documento (subárbol enraizado en el nodo de contexto) . –
Incluso para documentos XML pequeños que usan '//' pueden afectar terriblemente el rendimiento (si estas expresiones XPath se emiten con frecuencia). Además, si uno se acostumbra a '//' con documentos pequeños, entonces hay grandes posibilidades de que lo olvide y lo use con documentos más grandes y así crear un desastre de rendimiento. Después de todo, ¿quién decide qué tan pequeño es "pequeño" y dónde deja de ser "pequeño"? –