Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XmlPullParserFactory在android中解析Xml_Android_Xml_Parsing_Xml Parsing_Xmlpullparser - Fatal编程技术网

使用XmlPullParserFactory在android中解析Xml

使用XmlPullParserFactory在android中解析Xml,android,xml,parsing,xml-parsing,xmlpullparser,Android,Xml,Parsing,Xml Parsing,Xmlpullparser,对于名称相同但事件类型不同的节点,我不知道如何解析。感谢您的帮助 首先,您可以这样声明一个内部类: if(myparser.getName().equalsIgnoreCase("tagname")){ //do something } 然后,解析代码: static class Track { String event; String url; } List allTracks=new

对于名称相同但事件类型不同的节点,我不知道如何解析。感谢您的帮助

首先,您可以这样声明一个内部类:

if(myparser.getName().equalsIgnoreCase("tagname")){
                        //do something
                     }
然后,解析代码:

static class Track {
    String event;
    String url;
}
List allTracks=new ArrayList();
require(XmlPullParser.START_标记,null,“MyEvents”);
while(myparser.next()!=XmlPullParser.END_标记){
if(myparser.getEventType()!=XmlPullParser.START_标记){
继续;
}
String name=myparser.getName();
如果(名称等于(“跟踪”)){
String event=myparser.getAttributeValue(0);//我假设只有一个
require(XmlPullParser.START_标记,null,“跟踪”);
字符串url=null;
if(myparser.next()==XmlPullParser.TEXT){
url=parser.getText();
myparser.nextTag();
}
轨道=新轨道();
track.event=事件;
track.url=url;
所有曲目。添加(曲目);
}
}

这并不完美,但应该得到一个曲目列表,每个曲目都有各自的url和事件。

看起来您只需要通过解析器查看处理属性和过滤的方法。看看方法。if(parser.getAttributeValue(“second”,null)!=null){//do something}像这样的事情吗?非常感谢你及时的帮助和这个片段。这很有帮助。
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);
    }
}