2011-12-20 7 views
3

Я создал файл XML и поместил его в папку «res». Я решил использовать XmlResourceParser для анализа XML-файла.Как получить доступ к дочерним элементам с помощью XmlResourceParser

Мой вопрос: как перейти на следующий уровень элементов? В частности, как я могу получить доступ к дочерним узлам?

Благодаря

Мой файл XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<encounters> 
    <creature id="1" type="humanoid" name="Jon" race="Human" gender="M" age="20" alignment="NE"> 
     <appearance condition="ragged" skinColor="white" hairColor="brown" size="M" height="70" weight="170"></appearance> 
     <stats hp="20" ac="5" ap="5" mp="10" str="11" dex="15" int="15"></stats> 
     <inventory wp1="sword" wp2="knife" arm1="leather" arm2="bracers"></inventory> 
     <magic attSp1="fireball" attSp2="iceBall" defSp1="minor Shield" defSp2="major Shield"></magic> 
     <treasureItems gp="10" sp="25" item1="ring of protection + 1"></treasureItems> 
    </creature> 
</encounters> 

Мой код до сих пор выглядит следующим образом:

// ***** BEGIN XML PARSING ***** 
    try { 
     while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { 
      if (xrp.getEventType() == XmlResourceParser.START_TAG) { 
       String s = xrp.getName(); 

       if (s.equals("creature")) { 
        encounterID = xrp.getAttributeResourceValue(null, "id", 0); 
        encounterType = xrp.getAttributeValue(null, "type"); 
        encounterName = xrp.getAttributeValue(null, "name"); 
        encounterRace = xrp.getAttributeValue(null, "race"); 
        encounterGender = xrp.getAttributeValue(null, "gender"); 
        encounterAge = xrp.getAttributeResourceValue(null, "age", 0); 
        encounterAlignment = xrp.getAttributeValue(null, "alignment"); 
       } 
      } 
     } 
    } catch (XmlPullParserException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
     // ***** END XML PARSING ***** 
+1

getResource(). GetString() или что-то было бы проще – njzk2

+0

Я не уверен, что вы имеете в виду, извините, я новичок в этом и довольно невежествен. Вы имеете в виду getResource(). GetSring() лучше, чем XmlResourceParser? Или вы имеете в виду вместо использования XmlResourceParser.getName(), я должен использовать getResource(). GetString() ... Просто из любопытства, почему это было бы проще? --- Спасибо --- – SkyeBoniwell

+1

если ваш файл находится в res, скорее всего, вы можете получить к нему доступ через getResources() (хотя я не совсем уверен, что вы пытаетесь сделать здесь) – njzk2

ответ

3

Ниже документация о том, как использовать XmlPullParser documentation.

Если вы хотите использовать функцию xrp.next(), чтобы переместить синтаксический анализатор в следующий элемент. Это будет циклически перемещаться по всем элементам вашего XML-документа в том порядке, в котором они появляются. Если у вас есть вспомогательные элементы, синтаксический анализатор достигнет этих значений после касания START_TAG родительского элемента.

+0

Привет, спасибо за ссылку. К сожалению, я уже начал свой код с помощью XmlResourceParser. Улучшен ли XmlPullParser? --- Спасибо – SkyeBoniwell

+1

Это то же самое. См. Документацию для XmlResourceParser, она реализует интерфейс XmlPullParser. –

+0

О, хорошо, я посмотрю. Благодарю. – SkyeBoniwell

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