获取XML元素的文本内容而不获取其子节点的文本内容

时间:2014-12-22 14:21:15

标签: java xml text svg

我正在尝试将SVG格式的图像导入到我正在使用的软件中。 例如,我有一个这样的SVG:

<svg height="100" width="100">
    <text>I Love SVG!
        <tspan> NOT! </tspan>"
    </text>
</svg>

当处理这个数据时,'text'元素,我有TextString =“element.getTextContent()”。这使得TextString =“我喜欢SVG!不!”当我想要的只是“我爱SVG!”。因此,当我不想包含子元素文本时,getTextContent方法返回元素及其子元素的文本。

是否有一种简单的方法可以只获取元素的文本内容而不获取子节点文本?感谢

2 个答案:

答案 0 :(得分:0)

您可以使用element.getChildNodes()遍历元素的子节点。节点类型为Node.TEXT_NODE的任何一个都是文本节点(通常会有多个)。

String textContent = "";
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.length(); i++) {
    Node n = childNodes.item(i);
    if (n.getNodeType() == Node.TEXT_NODE) {
       textContent += n.getNodeValue();
    }
}

答案 1 :(得分:0)

找到解决我问题的方法,感谢JLRishe和kulatamicuda的建议。

而不是TextString = element.getTextContent()(它从所有子节点以及原始文本节点获取文本)

我使用了TextString = element.getFirstChild()。getTextContent()。

使用它时,我确保第一个孩子实际上是一个文本节点,而不是这样的:

<text><tspan>tspan text</tspan></text>