【发布时间】:2012-12-10 19:03:29
【问题描述】:
我有点卡在 XPath 和/或 Java 上。我有如下 XML 文档结构:
<document>
<text>
<headline>This is the text's headline</headline>
This is the text.
</text>
</document>
我需要的是这个:
<document>
<text>
<headline>This is the text's headline</headline>
<w>This</w>
<w>is</w>
<w>the</w>
<w>text</w>
<w>.</w>
</text>
</document>
我怎么能改变文本节点的文本内容,同时保持标题节点不变?! (我正在使用 org.jdom2.xpath。)
鲍勃
【问题讨论】:
-
您希望对读取的 XML 进行结构更改。我相信您需要一些 XSL(T) 来实现这一点——XPath 主要用于查询 XML。例如,请参阅<xsl:element> XSL 标记以在输出 XML 中创建新元素。或者,您可以 XPath 选择“这是文本。”,在 Java 中将其分解,使用 JDOM 重新组合,然后输出所需的 XML。
-
我不确定您回复的第二部分。我的问题不是打破“这是文本。”,而是保持标题节点到位。
-
XPath 用于选择 XML 节点并计算有关这些节点的内容。请参阅en.wikipedia.org/wiki/XPath 的前两行。您不能在 XPath 中创建那些
<w>节点。 -
Xpath 是一种用于 XML 文档的 查询 语言——它不能更改 XML 文档(创建或删除节点)。 XSLT 是一种专门为 XML 转换而创建的语言。使用 XSLT 解决像您这样的任务是微不足道的。如果您需要 XSLT 解决方案,请注明。
-
大家好,感谢您的回复。我不得不承认 XSLT 对我来说是全新的。我的想法(显然行不通)是这样的:
node.setText(""); for (int i = 0; i < words.size(); i++) { Element child = new Element("w"); child.setText(words.get(i)); node.addContent(child); }但是,这也会删除标题节点(我不太明白)。如果有人可以帮助我处理 XSLT,我将不胜感激。