<MyEvents>
<Tracking event="first">
<![CDATA[
http://www.myurl.com/test1
]]>
</Tracking>
<Tracking event="second">
<![CDATA[
http://www.myurl.com/test2
]]>
</Tracking>
<Tracking event="third">
<![CDATA[
http://www.myurl.com/test3
]]>
</Tracking>
<Tracking event="fourth">
<![CDATA[
http://www.myurl.com/test4
]]>
</Tracking>
<Tracking event="fifth">
<![CDATA[
http://www.myurl.com/test5
]]>
</Tracking>
</MyEvents>
我有这个需要解析和存储的xml。由于每个节点都被命名为相同的&#34;跟踪&#34;我不知道如何解析这个xml。我想在变量中解析和存储与每个事件名称(在这种情况下为第一,第二,第三,第四和第五)相对应的URL。我正在使用XMLPullParser,并且通过使用
,这个xml解析的其他部分很简单if(myparser.getName().equalsIgnoreCase("tagname")){
//do something
}
如果节点具有相同的名称但不同的事件类型,我不知道如何解析。任何帮助表示赞赏。
答案 0 :(得分:1)
首先,你可以声明一个这样的内部类:
static class Track {
String event;
String url;
}
然后,解析代码:
List<Track> allTracks = new ArrayList<Track>();
myparser.require(XmlPullParser.START_TAG, null, "MyEvents");
while (myparser.next() != XmlPullParser.END_TAG) {
if (myparser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = myparser.getName();
if (name.equals("Tracking ")) {
String event = myparser.getAttributeValue(0); // I'm supposing that there is just one
myparser.require(XmlPullParser.START_TAG, null, "Tracking ");
String url = null;
if (myparser.next() == XmlPullParser.TEXT) {
url = parser.getText();
myparser.nextTag();
}
Track track = new Track();
track.event = event;
track.url = url;
allTracks.add(track);
}
}
这不是完美的,但应该得到一个轨道列表,每个轨道都有各自的网址和事件。