парсинг xml в java - несколько дочерних элементов - PullRequest
0 голосов
/ 03 февраля 2012

Я хочу разобрать элементы xml, используя java.Мне удалось в некоторой части ... Но я не уверен, как сделать отдых .. У меня есть xml as,

<MainTag>
    <userid>user1</userid>            
    <country>US</country>
    <city>LA</city>
    <phone>
            <number>1111111111</number>
    </phone>
    <phone>
              <number>222222222</number>
    </phone>
 </MainTag>
 <MainTag>
    <userid>user2</userid>            
    <country>Aus</country>
    <city>MB</city>
    <phone>
             <number>23233</number>
    </phone>
    <phone>
             <number>8787822</number>
    </phone>
    <phone>
              <number>10101</number>
    </phone>

Я могу анализировать элементы XML, такие как страна, город и т. Д., Как показано ниже.

public void endelement()
{
  if (someText.equalsIgnoreCase("country"))
  {
     pojo.setCountry(Val);
  }
  else if(someText.equalsIgnoreCase("city"))
  {
   pojo.setCity(Val);
  }
}
public void stratelement()
{
   ............
}   

а в случае телефона как его разобрать? поскольку у одного пользователя несколько телефонных номеров.

Я хочу найти несколько телефонных номеров для конкретного пользователя.

например, выше xml

для пользователя user1 есть два номера телефона. для пользователя user2 есть три номера телефона.

Кто-нибудь может помочь в этом? Заранее спасибо.

Ответы [ 3 ]

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

Я бы порекомендовал использовать JAXB, поскольку, похоже, вы пытаетесь связать свой xml с POJO.

Рассматривая код, который вы написали здесь (и предполагая, что приведенный вами пример xml является фрагментомправильной формы xml), я полагаю, что у вашего pojo объекта должен быть элемент для телефонных номеров типа List<String>, а у вашего pojo должен быть метод, позволяющий добавить номер телефона к List(возможно addPhoneNumber(String phoneNumber) {...})

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

Во-первых, это не правильно сформированный XML (так как он имеет два корневых элемента), и вы не можете проанализировать его с помощью любого API синтаксического анализатора, если он не является правильно сформированным. Теперь, чтобы проанализировать XML, вы обычно используете API-интерфейсы, предназначенные для него, такие как SAX, DOM или StAX или, что еще лучше, API связывания JAXB.

Так как вы, кажется, плохо знакомы с этим, я предлагаю вам начать изучать JAXP . Используйте StAX вместо DOM или SAX.

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

вы можете использовать Java-класс DocumetBuilderFactory по умолчанию, если вы знаете, например, формат входящего xml, сколько у него узлов и имена, это очень просто, посмотрите на этот код;корневой элемент

Element de= dom.getDocumentElement();

// получить список узлов основного элемента

    NodeList nl = de.getElementsByTagName("Employee");
    if(nl != null && nl.getLength() > 0) {
        for(int i = 0 ; i < nl.getLength();i++) {

            //get the employee element
            Element el = (Element)nl.item(i);
}
}

// и затем получить данные

private void getEmployee(Element el) {

    //for each <employee> element get values 
    String name = getTextValue(el,"Name");
    int id = getIntValue(el,"Id");
    int age = getIntValue(el,"Age");


               //get any element attribute
    //String type = el.getAttribute("type");



}

вот и все

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