XmlPullParser получает все дочерние значения

Как я могу получить дочерние значения xml?

Я имею в виду: если xml.getName() = Section дайте мне свои подзначения. Я думаю, что должен использовать в нем цикл while, но я не смог этого добиться!

ИЛИ можно ли получить родительское значение?

<Top name="Top category">

  <Section name="Sub category 1">
     <Sub note="text" />
     <Sub note="text" />
  </Section>

<Section name="Sub category 2">
     <Sub note="text" />
     <Sub note="text" />
  </Section>

</Top>

...

  while (eventType != XmlPullParser.END_DOCUMENT) {

 if ((eventType == XmlPullParser.START_TAG) &&(_xml.getName().equals("Section"))){
                    String _Section = _xml.getAttributeValue(null, "name");

// take its Sub note values


   }    

 }

}

person metemet06    schedule 11.05.2013    source источник


Ответы (2)


При работе с парсерами pull вы должны создать объект таким образом, чтобы к нему можно было получить доступ, когда вы сталкиваетесь с подэлементом этого объекта. Например, в этом случае всякий раз, когда вы сталкиваетесь с START_TAG для раздела, создайте объект раздела и сохраните его в переменной за пределами области действия метода. Затем, если вы найдете другой START_TAG подраздел, раздел не нулевой, это означает, что вы находитесь в разделе и вам нужно добавить подраздел. Как только вы найдете END_TAG для раздела, добавьте текущий объект раздела в список, а затем установите для этой переменной значение null.

person dmon    schedule 11.05.2013
comment
Можно ли использовать getDepth() . Если я использую _xml.getDepth()-1, я думаю, это даст мне глубину родителя, так можно ли получить значения глубины родителя? - person metemet06; 12.05.2013
comment
Уррр.. зачем тебе глубина? - person dmon; 12.05.2013
comment
Я хочу получить значение родительского узла при получении подузлов, если это возможно. - person metemet06; 12.05.2013
comment
Или есть примеры использования вашего метода? - person metemet06; 12.05.2013
comment
Можете ли вы предоставить какой-нибудь фрагмент, чтобы мы могли легко понять. - person Arpit Patel; 09.09.2016

Могу ли я предложить использовать хорошую библиотеку десериализации, например AQuery — https://code.google.com/p/android-query/

Я никак не связан с проектом, но кажется, что он может решить вашу задачу гораздо эффективнее и надежнее.

person rock_win    schedule 12.05.2013