Heim > Java > javaLernprogramm > Wie gehe ich mit XML-Namespaces in Java XPath-Abfragen um?

Wie gehe ich mit XML-Namespaces in Java XPath-Abfragen um?

Patricia Arquette
Freigeben: 2024-11-11 18:24:03
Original
389 Leute haben es durchsucht

How to Handle XML Namespaces in Java XPath Queries?

XML-Namespace-Handhabung in Java-XPath-Abfragen

In Java können Namespaces beim Abfragen von XML mit XPath eine Herausforderung darstellen. Wenn XML keine Namespaces enthält, können XPath-Abfragen unkompliziert sein, aber das Vorhandensein von Namespaces bringt Komplexität mit sich.

Fall 1: XML ohne Namespaces

Für XML ohne Namespaces: XPath Abfragen verwenden den Standard-Namespace, der praktisch kein Namespace ist. In diesem Fall können Abfragen wie „/workbook/sheets/sheet[1]“ problemlos Elemente abrufen.

Fall 2: XML mit Namespaces

Jedoch XML mit Namespaces wie die folgenden erhöhen die Komplexität:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <sheets>
    <sheet name="Sheet1" sheetId="1" r:id="rId1"/>
  </sheets>
</workbook>
Nach dem Login kopieren

In solchen Fällen der XPath-Ausdruck „/workbook/sheets/sheet[1]“ schlägt fehl, da die Elemente an den Namespace „http://schemas.openxmlformats.org/spreadsheetml/2006/main“ gebunden sind.

Lösungen:

  1. Namespace-Registrierung: Die bevorzugte Methode besteht darin, den Namespace bei einem zu registrieren Präfix und verwenden Sie es in der XPath-Abfrage, um es einfacher zu lesen und zu verwalten.
  2. Generischer Match mit Prädikat: Ohne Namespace-Registrierung kann ein komplexerer XPath-Ausdruck verwendet werden:
/*[local-name()='workbook' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main']
  /*[local-name()='sheets' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main']
  /*[local-name()='sheet' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main'][1]
Nach dem Login kopieren
  1. Lokale Namensübereinstimmung: Eine weniger bevorzugte Option ist die nur lokale Übereinstimmung Name des Elements, Ignorieren des Namensraums, aber es besteht die Gefahr, dass falsche Elemente ausgewählt werden, wenn gemischte Vokabulare vorhanden sind.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit XML-Namespaces in Java XPath-Abfragen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage