Java XPath 查詢中的XML 命名空間處理
在Java 中,當使用XPath 查詢XML 時,命名空間可能會帶來挑戰。當 XML 不包含命名空間時,XPath 查詢可以很簡單,但命名空間的存在會帶來複雜性。
情況 1:沒有命名空間的 XML
對於沒有命名空間的 XML,XPath查詢使用預設命名空間,這實際上是沒有命名空間的。在這種情況下,像“/workbook/sheets/sheet[1]”這樣的查詢可以輕鬆檢索元素。
情況2:帶有命名空間的XML
但是,帶有命名空間的XML像下面這樣的命名空間增加了複雜性:
<?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>
在這種情況下,XPath 表達式「/workbook/sheets/sheet[1]」將會失敗,因為元素綁定到「http://schemas.openxmlformats.org/spreadsheetml/2006/main ”命名空間。
解決方案:
/*[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]
以上是如何處理 Java XPath 查詢中的 XML 命名空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!