【发布时间】:2018-11-30 17:57:41
【问题描述】:
我正在使用 Xpath 表达式从 XML 文档中获取文本节点,如下所示:
<company>
<emp>
<dept>Acct</dept>
<salary>1000</salary>
<proj>
<under>E01</under>
<under>E02</under>
</proj>
<name>John Doe</name>
<gender>male</gender>
</emp>
</company>
我编写了以下 XPATH 表达式来获取文本值:
normalize-space(string(//emp))
它正在提取正确的值,输出如下:
Acct1000E01E02John Doemale
注意来自不同节点的文本节点值之间没有空格。
我其实希望输出值是这样的:
`Acct 1000 E01 E02 John Doe`
我已经使用javax.xml.xpath 来解析和构建树如下:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("/employees.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "normalize-space(string(//emp))";
String output= (String)xPath.compile(expression).evaluate(document, XPathConstants.STRING);
我在这里使用 JAVA SE 10。所以,Xpath 版本是 1.0
有没有更好的方法来提取文本值? 我对 XPath 很陌生,所以任何建议都会有所帮助。
【问题讨论】:
标签: java xml xpath xquery xpath-1.0