Java 如何使用XPath读取xlink:标签值

Java 如何使用XPath读取xlink:标签值,java,xml,xlink,Java,Xml,Xlink,我需要从XML中获取xlink:label值(ASSET_1) <MESSAGE xmlns:xlink="http://www.w3.org/1999/xlink"> <ABOUT_VERSIONS> <ABOUT_VERSION SequenceNumber="1" xlink:label="ASSET_1" > <CreatedDatetime>2015-08-24T09:30:47Z</CreatedDatetime> <

我需要从XML中获取xlink:label值(ASSET_1)

<MESSAGE xmlns:xlink="http://www.w3.org/1999/xlink">
<ABOUT_VERSIONS>
<ABOUT_VERSION SequenceNumber="1"  xlink:label="ASSET_1" >
<CreatedDatetime>2015-08-24T09:30:47Z</CreatedDatetime>
<DataVersionName>Purchase Example</DataVersionName>
</ABOUT_VERSION>
</ABOUT_VERSIONS>
</MESSAGE>
我在提取xlink:label的值时犯了什么错误?请提供帮助。

您可以使用
@*[name()='xlink:label']
代替
@xlink:label

同样,切换到
@*[local-name()='label']
也应该可以做到这一点。

不,它仍然给我空值。所有对
System.out.println的调用(“+xPath.evaluate”(“+xPath.evaluate”(“MESSAGE/ABOUT\u VERSIONS/ABOUT\u VERSION/@xlink:label”、inputSource、XPathConstants.NODE))
System.out.println(“+xPath.evaluate”(“MESSAGE/ABOUT\u VERSIONS/ABOUT\u VERSION/@*[name()='xlink:label']”,inputSource,XPathConstants.NODE))
System.out.println(“+xPath.evaluate”(“MESSAGE/ABOUT\u VERSIONS/ABOUT\u VERSION/@*[local-name()='label']”,inputSource,XPathConstants.NODE))给你空值?是的,所有都返回空值。我怀疑我们是否需要为使用xlink注册名称空间。我不确定。只是一个想法。这可能会有帮助,但我不确定为什么前面提到的方法都不起作用。我在OracleJava1.8.0µ上检查了它。糟糕,我刚刚删除了XML,重新编译并尝试了您的代码。繁荣它开始工作了。谢谢
XPathFactory xpf = XPathFactory.newInstance();            
XPath xPath = xpf.newXPath();

XPathExpression pathExpression = xPath.compile("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION");   
InputSource inputSource = new InputSource("C:/Sample.xml");  
NodeList Nodes = (NodeList) xPath.evaluate("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION", inputSource, XPathConstants.NODESET);

System.out.println("SequenceNumber:: "+xPath.evaluate("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION/@SequenceNumber", inputSource, XPathConstants.NODE));
System.out.println(" "+xPath.evaluate("MESSAGE/ABOUT_VERSIONS/ABOUT_VERSION/@xlink:label", inputSource, XPathConstants.NODE));
OutPut
SequenceNumber:: SequenceNumber="1"

null