mio XPath è un po 'arrugginito ... Diciamo che ho questo semplice file XML:Come filtrare con XPath su tutti gli elementi senza un attributo specifico
<?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>
Vorrei eseguire una semplice query XPath per analizzare tutti gli stati veri (quindi non inserire stati dove territorio = true). Ho provato \ StateProvince [@territory! = 'True'] ma ho ottenuto zero. Altre variazioni sembrano fallire. Sembra che dovrebbe essere semplice, ma non trovare quello che voglio.
Qualsiasi aiuto apprezzato.
Specialmente se si è nuovi a XPath, è necessario prendere in considerazione considerazioni come sollevate nella mia soluzione: si deve evitare l'// abbreviazione ogni volta che è possibile poiché esso fa sì che l'intero documento (sottostruttura radicata al nodo di contesto) venga scansionato . –
Anche per i documenti XML di piccole dimensioni che utilizzano '//' può influire negativamente sulle prestazioni (se queste espressioni XPath vengono emesse frequentemente). Inoltre, se ci si abitua a '//' con piccoli documenti, allora le probabilità sono grandiose che dimenticherà e userà con documenti più grandi e quindi creerà un disastro di prestazioni. Dopo tutto, chi decide quanto piccolo è "piccolo" e dove smette di essere "piccolo"? –