【发布时间】:2023-03-09 13:19:01
【问题描述】:
我有以下 XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://research.sun.com/wadl/2006/10">
<doc xmlns:jersey="http://jersey.dev.java.net/"
jersey:generatedBy="Jersey: 1.0.2 02/11/2009 07:45 PM"/>
<resources base="http://localhost:8080/stock/">
<resource path="categories"> (<<---I want to get here)
<method id="getCategoriesResource" name="GET">
我想获得resource/@path 的值,所以我有以下Java 代码:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true); // never forget this!
DocumentBuilder builder = factory.newDocumentBuilder();
// get the xml to parse from URI
Document doc = builder.parse(serviceUri + "application.wadl");
XPathFactory xfactory = XPathFactory.newInstance();
XPath xpath = xfactory.newXPath();
XPathExpression expression =
xpath.compile("/application/resources/resource/@path");
this.baseUri = (String) expression.evaluate(doc, XPathConstants.STRING);
使用此 XPath 表达式,结果 (baseUri) 始终是空字符串 ("")。
【问题讨论】:
-
我不是 XPath 专家,但你不是只用
@attribute处理属性吗?你有/@path。试试/application/resources/resource@path。 -
/application/resources/resource/@path 是处理属性的正确方法