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>
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:
/*[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]
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!