Java 如何获取包含冒号的xml属性值?
我试图在java中使用Xpath解析xml文件。我需要获取属性值为xml:lang=“en”的文本元素下的所有元素值 这是我的xml文件:Java 如何获取包含冒号的xml属性值?,java,xml,xpath,Java,Xml,Xpath,我试图在java中使用Xpath解析xml文件。我需要获取属性值为xml:lang=“en”的文本元素下的所有元素值 这是我的xml文件: <?xml version="1.0" encoding="UTF-8" ?> <image id="10001" file="images/2/10001.png"> <name>Lake two mountains.png</name> <text xml:lang="en">
<?xml version="1.0" encoding="UTF-8" ?>
<image id="10001" file="images/2/10001.png">
<name>Lake two mountains.png</name>
<text xml:lang="en">
<description />
<comment />
<caption article="text/en/4/335157">Location map of Lake of Two Mountains. </caption>
</text>
<text xml:lang="de">
<description/>
<comment />
<caption article="text/de/5/441485">Lage des Lac des Deux Montagnes (ganz rechts liegt Montréal)</caption>
</text>
<text xml:lang="fr">
<description />
<comment />
<caption />
</text>
<comment>({{Information |Description= Location map of Lake of Two Mountains in Quebec, Canada. |Source= based on Image:Oka map with roads.png. |Date= |Author= P199 |Permission= |other_versions= }})</comment>
<license>GFDL</license>
</image>
我尝试了一些Xpath表达式来获取元素值,例如:
(1) /image/text[@xml:lang='en']/description”不起作用
(2) /image/text[@lang='en']/description“很好用
我很想知道第一个Xpath表达式有什么问题
提前感谢。由于某些原因(可能是历史原因),DocumentBuilderFactory
默认情况下不支持名称空间。在调用newDocumentBuilder()
之前,必须在工厂中调用setNamespaceAware(true)
,因为XPath只能在解析为命名空间感知的XML上正常工作
然后,我建议使用进行实际测试:
/image/text[lang('en')]/description
参考,您的命名空间是否正确注册?命名空间确实是问题所在。您可以展示一些java代码吗?您是否考虑过使用,因为它是专门为
xml:lang
?@Smutje:感谢您指出有关命名空间注册的内容。不知道命名空间注册。现在一切正常。谢谢你的支持。
/image/text[lang('en')]/description