gpt4 book ai didi

java - 为什么文本节点值之间没有空格?

转载 作者:行者123 更新时间:2023-11-30 05:53:23 25 4
gpt4 key购买 nike

我正在使用 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 还很陌生,所以任何建议都会有帮助。

最佳答案

你就快到了。选择not运营商是正确的选择。应该是这样的:

/html/body/company/emp/*[not(self::gender)]

即emp的除gender节点之外的所有子节点。
这是 javascript 的完整示例:

let xpathExpression = '/html/body/company/emp/*[not(self::gender)]';
let contextNode = window.document;
let xpathResult = document.evaluate(xpathExpression, contextNode,
null, XPathResult.ANY_TYPE, null);

console.log(xpathResult.iterateNext());
console.log(xpathResult.iterateNext());
console.log(xpathResult.iterateNext());
console.log(xpathResult.iterateNext());

关于java - 为什么文本节点值之间没有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com