【发布时间】:2019-09-04 10:49:03
【问题描述】:
我已经解析了一个 XML 提要,但我希望在其中一个标签内进一步解析数据,但不确定如何执行此操作?我在一个包中为此使用 XMLPullParser,然后将信息存储在一个 Widgetclass 包中,然后使用广播接收器通过一个 inent 将其发送到我的 mainactivity。
目前代码只调用了解析信息的一个字段,但是调用更多会出现XML Tag的内容未排序的问题。我似乎无法在这里使用 split.String 方法,它应该在我必须存储信息的小部件类中还是在 mainactivity 中?
//解析器 public static WidgetClass[] parseFeed(String content) {
try {
boolean inItemTag = false;
String currentTagName = "";
WidgetClass currentItem = null;
List<WidgetClass> itemList = new ArrayList<>();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(content));
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
currentTagName = parser.getName();
if (currentTagName.equals("item")) {
inItemTag = true;
currentItem = new WidgetClass();
itemList.add(currentItem);
}
break;
case XmlPullParser.END_TAG:
if (parser.getName().equals("item")) {
inItemTag = false;
}
currentTagName = "";
break;
case XmlPullParser.TEXT:
String text = parser.getText();
if (inItemTag && currentItem != null) {
try {
switch (currentTagName) {
case "title":
currentItem.setTitle(text);
break;
case "description":
currentItem.setDescription(text);
break;
case "link":
currentItem.setLink(text);
break;
case "pubDate":
currentItem.setPubDate(text);
break;
case "category":
currentItem.setCatagory(text);
break;
case "geo:lat":
currentItem.setGeoLat(Double.parseDouble(text));
case "geo:long":
currentItem.setGeoLong(Double.parseDouble(text));
default:
break;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
break;
}
eventType = parser.next();
} // end while loop
WidgetClass[] widgetClasses = new WidgetClass[itemList.size()];
return itemList.toArray(widgetClasses);
} catch (Exception e) {
e.printStackTrace();
return null;
}
理想情况下,我想进一步从标签中拆分流,然后将它们放入数组中以传递给我的可视层。
【问题讨论】:
-
您能否提供一个示例,说明您想要拆分哪些文本以及哪些是所需的结果?
-
这是要拆分的文本示例:
来源日期/时间:Thu, 14 Feb 2019 07:43:33 ;地点:新迪盖特,萨里;纬度/经度:51.163,-0.250;深度:2公里;数量级:2.4 希望将其拆分为 ;在每个条目之间并将其放入数组中
标签: java android xmlpullparser