Парсинг атрибута в XML с помощью DOM-парсера - PullRequest
3 голосов
/ 03 февраля 2012

Я в настоящее время анализирую XML, но я не совсем уверен, как проанализировать атрибут «status» «message»:

<message status="test"> <text>sometext</text> <msisdn>stuff</msisdn> </message>

Вот код, я обрезал все ненужное:

NodeList nodeLst = doc.getElementsByTagName("message");

for (int s = 0; s < nodeLst.getLength(); s++) {

       Node fstNode = nodeLst.item(s);

       if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

               Element fstElmnt = (Element) fstNode;

               NodeList numberNmElmntLst = fstElmnt
               .getElementsByTagName("msisdn");
               Element numberNmElmnt = (Element) numberNmElmntLst.item(0);
               NodeList numberNm = numberNmElmnt.getChildNodes();
               String phoneNumber = ((Node) numberNm.item(0))
               .getNodeValue().substring(2);

               NodeList txtNmElmntLst = fstElmnt
               .getElementsByTagName("text");
               Element txtNmElmnt = (Element) txtNmElmntLst.item(0);
               NodeList txtNm = txtNmElmnt.getChildNodes();
               String text = ((Node) txtNm.item(0)).getNodeValue();

               NodeList rcvNmElmntLst = fstElmnt
               .getElementsByTagName("received");
               Element rcvNmElmnt = (Element) rcvNmElmntLst.item(0);
               NodeList rcvNm = rcvNmElmnt.getChildNodes();
               String recievedDate = ((Node) rcvNm.item(0)).getNodeValue();
            }
}       

Кто-нибудь может подсказать мне, как это сделать?

Заранее спасибо.

Ответы [ 2 ]

11 голосов
/ 03 февраля 2012

Node.getAttributes ()

NamedNodeMap attributes = fstElmnt.getAttributes();

for (int a = 0; a < attributes.getLength(); a++) 
{
        Node theAttribute = attributes.item(a);
        System.out.println(theAttribute.getNodeName() + "=" + theAttribute.getNodeValue());
}

Вы можете избежать обхода, если используете XPATH для извлечения данных.Прочитайте этот урок .

1 голос
/ 03 февраля 2012

Я играл с Apache Xerces для анализа DOM. Но это были ужасные задачи. Если бы вы могли, взгляните на jsoup .

Итак, если на ваш вопрос есть ответ в Jsoup, это будет:

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