如何使用Java在XML文档中的两个兄弟节点之间提取内容

时间:2011-05-10 12:50:10

标签: java xml dom xml-parsing

示例xml文档:

<a>
    <b>...</b>
    xyz
    <c>...</c>
</a>

有没有办法使用Java代码(通过DOM解析)提取标记xyzb之间的内容c

2 个答案:

答案 0 :(得分:1)

迭代根元素(<a>)的节点。在您的示例中,第二个节点(索引为2,因为节点从1开始索引)将是文本节点。

Document document = ...; // create org.w3c.dom.Document instance from XML
document.getDocumentElement().getChildNodes().item(2).getTextContent();

答案 1 :(得分:1)

假设元素引用标记'a'以下代码应该提取您想要的内容并且如果您在'b'和'c'标记之前和之后有内容

也可以工作
    NodeList content = element.getChildNodes();
    StringBuilder textContent = new StringBuilder();
    int cntLength = content.getLength();
    for ( int i = 0; i < cntLength; i++ ) {
        Node paramValue = content.item( i );
        short type = paramValue.getNodeType();
        if ( ( type == Node.TEXT_NODE ) || ( type == Node.CDATA_SECTION_NODE ) ) {
            textContent.append( ((CharacterData) paramValue).getData() );   //  Both Text and CDATASection nodes are SubType of CharacterData
        }
    }