2011-01-14 65 views
3

我正在试图获取顶级文本,而不是子文本。所以我有以下的XML:如何仅通过getTextContent()获取顶级节点的文本内容()

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

我想只获得父(text1)文本。因此,在这个例子中,我会做

node.getTextContent(); 

,并得到text1,不text1text2这getTextContent目前给我。现在我已经阅读了pages这个人,我知道他们说getTextContent返回所有子项与父项的连接字符串。但我只是喜欢父母的文字。我想要做的另一种方式是尝试隔离父项与子项,并对父项执行getTextContent命令,但我不知道这有多可行。

任何帮助,将不胜感激

感谢,-Josh

回答

2

迭代通过该节点的所有孩子和串联那些文本节点。要么是XPath,要么是XPath。

+0

1+代表XPath的。 :) – 2011-01-14 19:54:34

+0

谢谢你的回答+1 – Grammin 2011-01-14 19:59:40

2

getChildNodes()是否工作?如果是这样的话,你可以遍历所有的childNode并调用getContent(),并将其从Node.getContent()中减去。这会导致文本不是子节点的一部分。

最佳答案:不要混合文本与子节点。我不得不再次检查你提供的xml是否合法,但是它让我害怕。

1

我认为你可以使用xpath的job/text()这可能比浏览DOM模型更容易。

如果可以,避免混合的内容,它有点痛苦的工作。

0

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

2

取而代之的是

node.getTextContent(); 

使用本:

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