gpt4 book ai didi

java - 如果 XML 文件有 "xmlns",如何使用 XPath 从 XML 文件中获取文本

转载 作者:行者123 更新时间:2023-12-04 06:48:10 25 4
gpt4 key购买 nike

我从网站 ( http://www.abc.com/ ) 得到一个 XML 文件,

网址是:http://www.abc.com/api/api.xml

内容是:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.abc.com/">
<name>Hello!</name>
</root>

它有 xmlns="http://www.abc.com/"在 XML 文件中,

现在,我使用 JDOM XPath 来获取文本 Hello!
XPath xpath = XPath.newInstance("/root/name/text()");
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new URL("http://www.abc.com/api/api.xml"));

System.out.println(xpath.valueOf(doc)); //nothing to print...

我测试删除 xmlns="http://www.abc.com/"从 XML 文件,这是工作!

如何更改我的 java 代码以获取 Hello! , 如果 xmlns="http://www.abc.com/"存在?

(我无法更改此 XML 文件)

感谢帮助 :)

最佳答案

您需要让查询知道 xml 命名空间。这里的答案看起来可以解决问题:

Default Xml Namespace JDOM and XPATH

您还可以更改查询以使用 local-name 来忽略命名空间:

XPath xpath = XPath.newInstance("/*[local-name() = 'root']");

那应该返回名为 root 的节点。也就是说,如果它支持它并且我输入正确! :) 我不熟悉用于 XML + XPATH 的 Java API。

请注意,xml 命名空间的存在是为了将节点“root”与任何其他名为“root”的节点区分开来。就像类/包命名空间一样。忽略它们可能会导致名称冲突。您的里程可能会有所不同。

哈,
扎克

关于java - 如果 XML 文件有 "xmlns",如何使用 XPath 从 XML 文件中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com