Ich versuche, auf ein Element nach Wert mithilfe einer XPath-Abfrage zuzugreifen, um später seinen Wert zu aktualisieren, obwohl die XML-Datei einfach ist, konnte nicht die richtige Abfrage finden.Xpath-Abfrage, um ein Element nach Wert zu aktualisieren
zum Beispiel:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<OBJECTID>1</OBJECTID>
<TABLE_PK>IN</TABLE_PK>
<FIELD_PK>AC_TR_OID</FIELD_PK>
<TABLE_FK></TABLE_FK>
</row>
<row>
<OBJECTID>2</OBJECTID>
<TABLE_PK>ARQUETAP</TABLE_PK>
<FIELD_PK>ARP_AR_OID</FIELD_PK>
<TABLE_FK>ARQ</TABLE_FK>
</row>
<row>
<OBJECTID>3</OBJECTID>
<TABLE_PK>ACOMRUR</TABLE_PK>
<FIELD_PK>ACR_TR_OID</FIELD_PK>
<TABLE_FK>PASS</TABLE_FK>
</row>
<row>
<OBJECTID>4</OBJECTID>
<TABLE_PK>ACOMRUR</TABLE_PK>
<FIELD_PK>ACR_RA_OID</FIELD_PK>
<TABLE_FK>WRANCH</TABLE_FK>
</row>
<row>
<OBJECTID>5</OBJECTID>
<TABLE_PK>ACTUATION</TABLE_PK>
<FIELD_PK>ACT_ACTUATIONP_OID</FIELD_PK>
<TABLE_FK>ACTUATIONP</TABLE_FK>
</row>
</root>
Ich mag nur Zugang Elemente eine nach der anderen, zum Beispiel erhalten: aktualisieren TABLE_PK Element ACOMRUR die Anzahl der Zeile 3 mit einem neuen Wert namens ACOMRUR zu ersetzen, /root/row [3]/OBJETID [text() = 'ACOMRUR'] /root/row/TABLE_PK [text() = 'ACOMRUR']
Ich habe auch mit komplexeren Abfragen getestet, verschachtelte, logische Operatoren aber nichts. Ich würde schätzen, irgendwelche Vorschläge Dank,
/root/row [3]/OBJETID [text() = 'ACOMRUR'] –
/root/row/TABLE_PK [text() = 'ACOMRUR'] –
Möglicherweise müssen Sie [Präfixe/Zuordnungen oder geschweifte URI angeben Literale] (https://www.w3.org/TR/xpath-31/#id-basics) für den Namensraum 'http: // www.w3.org/2001/XMLSchema-instance'. – McDowell