Как извлечь содержимое между двумя одноуровневыми узлами в XML-документе, используя Java - PullRequest
2 голосов
/ 10 мая 2011

образец XML-документа:

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

Есть ли способ извлечь содержимое xyz, помещенное между тегами b и c, используя код Java (с помощью анализа DOM)?

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Предполагая, что элемент ссылается на тег '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
        }
    }
1 голос
/ 10 мая 2011

Перебирать узлы корневого элемента (<a>).В вашем примере второй узел (с индексом 2, так как узлы индексируются с 1) будет текстовым узлом.

Document document = ...; // create org.w3c.dom.Document instance from XML
document.getDocumentElement().getChildNodes().item(2).getTextContent();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...