2013-07-22 3 views
2

Спасибо за рассмотрение этого вопроса.Чтение сложного XML Java

Я читаю сложный XML-файл, который, как вы можете видеть в коде, имеет 44 основных «узла». Каждый узел имеет дополнительные вложенные элементы и т. Д.

Мне удалось прочитать информацию с первого узла, но кажется, что после первой итерации возвращается только нуль. Что я могу пропустить?

for (int i=0; i<nodeList.getLength(); i++){ 
       log(String.valueOf(i)); 
       Element flightInfo = (Element)nodeList.item(i); 
        NodeList flights = flightInfo.getElementsByTagName("flight"); 
         Element flight = (Element)flights.item(0); 
          String flightId = flight.getAttribute("id"); 
          String airlineCode = flight.getAttribute("airlineCode"); 
          String operationType = flight.getAttribute("operationType"); 
          String flightRoute= flight.getAttribute("flightType"); 
          String scheduledTime = flight.getAttribute("scheduledTime"); 
          NodeList routingList = flight.getElementsByTagName("routingList"); 
           Element iatas = (Element)routingList.item(0); 
            NodeList _iata = (iatas.getElementsByTagName("IATA")); 
             String iata = _iata.item(i).getFirstChild().getNodeValue(); 

          NodeList times = flight.getElementsByTagName("times"); 
           Element realTimes = (Element)times.item(0); 
            NodeList _realTime = (realTimes.getElementsByTagName("realTime")); 
             String realTime = _realTime.item(0).getFirstChild().getNodeValue(); 
          NodeList means = flight.getElementsByTagName("means"); 
           Element gates = (Element)means.item(0); 
            NodeList _gate = gates.getElementsByTagName("gate"); 
             Element gate = (Element)_gate.item(0); 
              String gateId = gate.getAttribute("id"); 
           Element bagClaimList = (Element)means.item(0); 
            NodeList bagClaims = bagClaimList.getElementsByTagName("bagClaim"); 
             Element bagClaim = (Element)bagClaims.item(0); 
              String bagId = bagClaim.getAttribute("id"); 
           Element standList = (Element)means.item(0); 
            NodeList stands = standList.getElementsByTagName("stand"); 
             Element _stand = (Element)stands.item(i); 
              String standId = _stand.getAttribute("id"); 

          NodeList remarks = flight.getElementsByTagName("flight"); 
           Element remarkCodes = (Element)remarks.item(0); 
            NodeList _remarkCode = (remarkCodes.getElementsByTagName("remarkCode")); 
            String remarkCode = _remarkCode.item(0).getFirstChild().getNodeValue(); 
       flightList.add(new Flight(flightId, airlineCode, operationType,iata, scheduledTime, iata, realTime, gateId, bagId, standId, remarkCode)); 
       log("Added new flightInfo"); 
     } 

XML, я читаю это следующее:

<flightData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file://c:/SITA/IKUSI FIDS/FIDS.XSD"> 
<flightInfo> 
<flight id="AM2613" airlineCode="AM" flightNumber="2613" operationType="D" flightType="D" scheduledTime="2013-07-18T07:00:00"> 
<routingList> 
<IATA>MTY</IATA> 
</routingList> 
<times> 
<realTime>2013-07-18T07:00:00</realTime> 
</times> 
<means> 
<gateList> 
<gate id="N/14"/> 
</gateList> 
<bagClaimList> 
<bagClaim id="2"/> 
</bagClaimList> 
<standList> 
<stand id="5"/> 
</standList> 
</means> 
<remarks> 
<remarkCode>DEP</remarkCode> 
</remarks> 
</flight> 
</flightInfo> 
<flightInfo>...</flightInfo> 
<flightInfo>...</flightInfo> 
<flightInfo>...</flightInfo> 
<flightInfo>...</flightInfo> 
+0

Отлично! Так много помощи! Вот почему я люблю такое сообщество! – chntgomez

+1

@AndrewThompson - если бы я просто выбросил столько XML и сильно сшитый код в вопросе, я бы поблагодарил любого, кто готов рассмотреть его ;-) Ничего плохого в том, чтобы быть вежливым – earcam

+0

@AndrewThompson: Chill out. –

ответ

8

Вы бы лучше использовать JAXB: с файлом XSD вы будете иметь возможность генерировать классы Java, представляющие модель и выиграл Не нужно писать весь этот код извлечения данных.

+0

Использование его прямо сейчас. Мне придется переписать весь код, чтобы извлечь его, но он работает нормально до сих пор. Благодаря! – chntgomez

Смежные вопросы