」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何處理 Java XPath 查詢中的 XML 命名空間?

如何處理 Java XPath 查詢中的 XML 命名空間?

發佈於2024-12-22
瀏覽:373

How to Handle XML Namespaces in Java XPath Queries?

Java XPath 查詢中的XML 命名空間處理

在Java 中,當使用XPath 查詢XML 時,命名空間可能會帶來挑戰。當 XML 不包含命名空間時,XPath 查詢可以很簡單,但命名空間的存在會帶來複雜性。

情況 1:沒有命名空間的 XML

對於沒有命名空間的 XML,XPath查詢使用預設命名空間,這實際上是沒有命名空間的。在這種情況下,像“/workbook/sheets/sheet[1]”這樣的查詢可以輕鬆檢索元素。

案例2:帶有命名空間的XML

但是,帶有命名空間的XML像下面這樣的命名空間增加了複雜性:



  
    
  

在這種情況下,XPath 表達式「/workbook/sheets/sheet[1]」將會失敗,因為元素綁定到「http://schemas.openxmlformats.org/spreadsheetml / 2006年/主要”命名空間。

解決方案:

  1. 命名空間註冊: 首選方法是使用前綴註冊命名空間,並在XPath查詢,更容易閱讀和維護。
  2. Generic Match with Predicate:沒有命名空間註冊,更複雜可以使用XPath 表達式:
/*[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]
  1. 本地名稱匹配: 不太優選的選項是僅匹配元素的本地名稱,忽略命名空間,但是如果混合詞彙,這可能會選擇不正確的元素存在。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3