#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, вы могли бы принимать определенные вещи как должное, например, порядок отображения элементов, поэтому вам не понадобилось бы столько условной проверки. я не знаю, какие проблемы с лицензированием у вас могут возникнуть при использовании сторонней библиотеки, это было бы моей заботой для платного приложения. всего наилучшего.