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年/主要”命名空间。
解决方案:
/*[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]
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3