Java DOM XML дочерний узел - PullRequest
0 голосов
/ 15 июня 2011

Я смущаюсь и расстраиваюсь после нескольких часов попыток всех видов вещей (возможно, стресс от этого омрачает мои способности здесь).Моя строка XM выглядит следующим образом:

<?xml version="1.0"?><myStuff>
  <paul atrA="46" atrB="10457152"><TEST>hellothere</TEST>
  </paul>
</myStuff>

Я могу извлечь все, кроме информации, содержащейся в TEST.Мне нужно получить информацию, содержащуюся в ТЕСТ.Как мне это сделать?

Вот мой код:

private Map<String, String> parseResponse(final String responseXml) throws IOException, ParserConfigurationException, SAXException {
    System.out.println(responseXml);

    Document doc = parseXml(responseXml);
    return extractAttributes(doc);
}

private Map<String, String> extractAttributes(Document doc) {
    NodeList nList = doc.getElementsByTagName("paul");
    Map<String, String> keyValues = new HashMap<String, String>();

    for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
            Element eElement = (Element) nNode;
            NamedNodeMap attrs = eElement.getAttributes();
            int len = attrs.getLength();
            for (int i = 0; i < len; i++) {
                Attr attr = (Attr) attrs.item(i);
                keyValues.put(attr.getNodeName(), attr.getNodeValue());
            }

        }
    }

    return keyValues;
}

1 Ответ

0 голосов
/ 15 июня 2011

Ваш <TEST> узел является дочерним узлом <paul>, поэтому вы должны выполнить getChildNodes (), а затем выполнить итерацию по ним.

    for (int temp = 0; temp < nList.getLength(); temp++) {
    Node nNode = nList.item(temp);
    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode;

        // iterate through children here.
        NodeList childrenList = eElement.getChildNodes();
        for ( Node aNode : childrenList ) {
               // YOU SHOULD HAVE TEST HERE
        }
        NamedNodeMap attrs = eElement.getAttributes();
        int len = attrs.getLength();
        for (int i = 0; i < len; i++) {
            Attr attr = (Attr) attrs.item(i);
            keyValues.put(attr.getNodeName(), attr.getNodeValue());
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...