Java 如果XML文件包含;xmlns";,如何使用XPath从XML文件中获取文本
我从网站()获得一个XML文件 网址是: 内容是:Java 如果XML文件包含;xmlns";,如何使用XPath从XML文件中获取文本,java,xml,jdom,Java,Xml,Jdom,我从网站()获得一个XML文件 网址是: 内容是: <?xml version="1.0" encoding="utf-8"?> <root xmlns="http://www.abc.com/"> <name>Hello!</name> </root> 我测试删除xmlns=”http://www.abc.com/“从XML文件开始,这就是工作 如何更改我的java代码以获得Hello,如果xmlns=”http://www
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.abc.com/">
<name>Hello!</name>
</root>
我测试删除xmlns=”http://www.abc.com/“
从XML文件开始,这就是工作
如何更改我的java代码以获得Hello代码>,如果xmlns=”http://www.abc.com/“
是否存在
(我无法更改此XML文件)
谢谢您的帮助:)您需要让查询知道xml名称空间。这里的答案看起来很有用:
您还可以将查询更改为使用本地名称忽略名称空间:
XPath xpath = XPath.newInstance("/*[local-name() = 'root']");
应该返回名为root的节点。也就是说,如果它支持它,并且我正确地键入了它!:)我不熟悉XML+XPATH的JavaAPI
请注意,xml名称空间的存在是为了将节点“root”与任何其他名为“root”的节点区分开来。就像类/包名称空间一样。忽略它们可能会导致名称冲突。你的国籍可能不同
嗯,,
扎克我最近没有这样做。但快速搜索发现
指向XPathFactory的用法:
NamespaceContext context = new NamespaceContextMap("http://www.abc.com/" );
或者,您可以使用Zach的答案,忽略给定的名称空间(如果我正确理解他的话)。如果在同一层次结构级别上有更多的“根”节点,这可能会导致问题
NamespaceContext context = new NamespaceContextMap("http://www.abc.com/" );