2013-03-22 3 views
4

У меня есть этот XML-файл:LibGDX чтения XML-файл

<pack name="Cappellino" num_monete_livello="1100"> 
    <level number="1" status="nolocked" /> 
    <level number="2" status="locked" /> 
    <level number="3" status="locked"/> 
</pack> 
<pack name="Canottiera"> 
    <level number="4" status="locked"/> 
    <level number="5" status="locked"/> 
    <level number="6" status="locked"/> 
    <level number="7" status="locked"/> 
</pack> 
<pack name="Tuta"> 
    <level number="8" status="locked"/> 
    <level number="9" status="locked"/> 
    <level number="10" status="locked"/> 
</pack> 

Для чтения этого файла я использую этот код:

XmlReader xml = new XmlReader(); 
XmlReader.Element xml_element = xml.parse(ProgressFileHandle); 
Iterator iterator_level = xml_element.getChildrenByName("level").iterator(); 
while(iterator_level.hasNext()){ 
    XmlReader.Element level_element = (XmlReader.Element)iterator_level.next(); 
    String level_number = level_element.getAttribute("number"); 
    String level_status = level_element.getAttribute("status"); 
} 

Проблема заключается в том, что код вернуть мне только последний пакет и на самом деле линия XmlReader.Element xml_element = xml.parse(ProgressFileHandle); вернуть мне только это:

<pack name="Tuta"> 
    <level number="8" status="noeggs"/> 
    <level number="9" status="locked"/> 
    <level number="10" status="locked"/> 
</pack> 

вы знаете, whay ???

+2

Я не уверен, но попробуйте добавить корневой элемент: Aleksandrs

+0

ДА !!!! это было !!! благодаря :-) –

ответ

4

Ваш xml имеет структурную проблему. Каждый xml-файл должен иметь только один корневой элемент. Вот почему читатель xml считывает только первый элемент. Вы можете разместить содержимое xml внутри корневого элемента.