从XML中的各个节点提取所有文本字段

时间:2014-01-22 14:56:03

标签: xml xpath

假设我有一个xml文档,并希望从每个bitl =。

中获取所有文本节点
<Stuff>
    <data>
        <Nodes>
            <NodeID>1</NodeID>
            <Name>thingA</Name>
            <MoreInfo>
                <Description>Scooter</Description>
            </MoreInfo>
        </Nodes>
        <Nodes>
            <NodeID>2</NodeID>
            <Name>thingB</Name>
            <MoreInfo>
                <Description>Bike</Description>
            </MoreInfo>
        </Nodes>
    </data>
</Stuff>

我想从每个文本中提取文本。

所以我最终得到:1,thingA,Scooter;和2,thingB,Bike。

NodeList nodes = (NodeList) xpath.evaluate("Nodes", resultXml, XPathConstants.NODESET);

for (int i = 0; i < nodes.getLength(); i++) {
    Node node = nodes.item(i);
    logger.info("Evaluating: " + node.toString());

    // How do I get just the text nodes descending from the "node" I just found,
    // without knowing what the actual node names? I wan't this to work 
    // for any list of nodes, no matter what the sub-element names are.
}

1 个答案:

答案 0 :(得分:0)

使用XPath选择所有非空白文本节点我只需使用路径//text()[normalize-space()],然后您可以遍历文本节点并使用node.getNodeValue()node.getTextContent()访问每个节点值