如何使用getTextContent()仅获取顶级节点的文本内容

时间:2011-01-14 19:39:36

标签: java xml dom xml-parsing

我正在尝试只获取顶级文本而不是子文本。所以我有以下xml:

<job>
  text1
  <input> text2 </input>
</job>

我想只获取父(text1)文本。所以在这个例子中我会做

node.getTextContent();

获取text1,而不是text1text2 getTextContent目前正在给我。现在我已经阅读了人pages,我知道他们说getTextContent返回所有子节点与父节点的串联字符串。但我只想从父母的文本。我想要做的另一种方法是尝试将父项与子项隔离,并仅对父项执行getTextContent命令,但我不知道它是多么可行。

任何帮助将不胜感激

谢谢,-Josh

6 个答案:

答案 0 :(得分:2)

遍历节点的所有子节点并连接那些文本节点。无论是那个还是XPath。

答案 1 :(得分:2)

getChildNodes()是否有效?如果是这样,你可以遍历所有的childNodes并在它们上调用getContent(),并从你的node.getContent()中减去它。这将导致文本不属于子节点。

最佳答案:不要将文字与子节点混合使用。我不得不仔细检查你提供的xml是否合法,但是它让我感到害怕。

答案 2 :(得分:1)

我认为您可能使用job / text()的xpath,这可能比导航DOM模型更容易。

如果可以的话,避免混合内容,这有点痛苦。

答案 3 :(得分:1)

而不是这个

node.getTextContent();

使用它:

if (node.getFirstNode() != null) 
{
  node.getFirstChild().getTextContent();
}

答案 4 :(得分:0)

如果有人遇到此问题,我发现这样做的最好方法是获取节点的所有子节点,然后获取每个子节点的节点类型。如果你得到一个文本节点,就在那个节点上调用getTextContent(),然后你就去了!

答案 5 :(得分:0)

node.firstChild.textContent.trim();