Как извлечь только (не все) определенные элементы из XML с помощью XStream (для веб-службы Android)?

#android #xml #xstream

#Android #xml #xstream

Вопрос:

Какой наилучший способ проанализировать XML-файл из веб-службы стороннего разработчика в Android?

Кажется, что с помощью XStream мне нужно определить классы и атрибуты для всего в XML. Но я хочу использовать только около 5% XML, есть ли сокращение для этого в XStream?

 # Space.java
public class Space {
    String id = null;
    String name = null;
}

# Parsing Code
        XStream xs = new XStream(new XppDomDriver());
        xs.alias("space", Space.class);
        Space s = (Space) xs.fromXML( myXMLData );

# space.xml
<space>
  <can-join type="boolean">false</can-join>
  <created-at type="datetime">2011-05-04T16:12:27-04:00</created-at>
  <default-showpage>Source/SVN</default-showpage>
  <description>Assembla Time Tracker for Android</description>
  <id>dvpLtiDOOr4lSCeJe5cbCb</id>
  <is-commercial type="boolean">true</is-commercial>
  <is-manager type="boolean">true</is-manager>
  <is-volunteer type="boolean">false</is-volunteer>
  <name>Assemblandroid TimeTracker</name>
  <parent-id nil="true"></parent-id>
  <public-permissions type="integer">0</public-permissions>
  <team-permissions type="integer">2</team-permissions>
  <updated-at type="datetime">2011-05-04T16:12:27-04:00</updated-at>
  <watcher-permissions type="integer">1</watcher-permissions>
  <wiki-name>assemblandroid-timetracker</wiki-name>
</space>
  

Комментарии:

1. Прямо сейчас я перешел на использование Xpath, который работает довольно хорошо, если ориентирован на Android 2.2 или выше.

Ответ №1:

Используйте SAXParser и DefaultHandler классы.

Комментарии:

1. Я посмотрел на SAX, но меня сводит с ума необходимость писать больше кода, чем размер xml.

2. @David: я не обнаружил, что мне пришлось писать много кода. я думаю, если вы контролируете формат xml, вы могли бы принимать определенные вещи как должное, например, порядок отображения элементов, поэтому вам не понадобилось бы столько условной проверки. я не знаю, какие проблемы с лицензированием у вас могут возникнуть при использовании сторонней библиотеки, это было бы моей заботой для платного приложения. всего наилучшего.