我想仅使用XMLpullparser解析项目部分中的标题和链接标记。如何解析它忽略以前的标题和链接标记?
<channel>
<title>AAA</title>
<link>linkone</link>
<item>
<title>BBB</title>
<link>link2</link>
</item>
</channel>
我正在使用的解析器正在关注。如何忽略起始标题和链接标记?
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
FileInputStream fis = ctx.openFileInput("StackSites.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
xpp.setInput(reader);
int eventtype = xpp.getEventType();
while (eventtype != XmlPullParser.END_DOCUMENT){
String tagname = xpp.getName();
switch (eventtype){
case XmlPullParser.START_TAG:
if(tagname.equalsIgnoreCase("item")){
curStackSite = new StackSite();
}
break;
case XmlPullParser.TEXT:
curText = xpp.getText();
break;
case XmlPullParser.END_TAG:
if(tagname.equalsIgnoreCase("item")){
stackSites.add(curStackSite);
}
if(tagname.equalsIgnoreCase("title")){
curStackSite.setName(curText);
}
if(tagname.equalsIgnoreCase("link")){
curStackSite.setLink(curText);
}
break;
default:
break;
}
eventtype = xpp.next();
}
答案 0 :(得分:1)
我不知道这是做正确的方法,但我所做的就是内部情况XmlPullParser.START_TAG:如果找到了项目标签,我设置的计数器等于1.如果是XmlPullParser.END_TAG:if counter!= 0,然后只为它增加对象的值。这个方法有效。如果有人知道更准确的方式请发布。感谢。
答案 1 :(得分:0)
有一个库可用于解析对POJO类的xml响应。 https://github.com/stanfy/gson-xml
通过使用此库,您无需进行手动解析。您需要根据您的xml创建POJO类。
对于给定的xml,您需要创建两个POJO类
Channel.java
public class Channel {
Item item;
}
Item.java
public class Item {
String title;
String link;
}
现在你可以解析你的xml,如下所示
public void parseXml(Strng xml){
XmlParserCreator parserCreator = new XmlParserCreator() {
@Override
public XmlPullParser createParser() {
try {
return XmlPullParserFactory.newInstance().newPullParser();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
};
GsonXml gsonXml = new GsonXmlBuilder().setXmlParserCreator(parserCreator).create();
Channel channel = gsonXml.fromXml(xml, Channel.class);
Log.v("temp", "Title : " + channel.item.title);
}