【问题标题】:Xmpullparser Android nested tagXmlpullparser Android 嵌套标签
【发布时间】:2015-02-16 16:52:24
【问题描述】:

我在解析我的 xml 文档时遇到问题,我需要从以下部分获取值:坐标。解析和切片没有问题。

下面是我的 xml 文档和部分代码。有什么建议吗?

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
        <Placemark id="placemark1">
            <name>test_name</name>
            <description>geom_test</description>
            <point>
                <coordinates>40.751816, -73.959119</coordinates>
            </point>
        </Placemark>
        <Placemark id="placemark2">
            <name>test_name1</name>
            <description>geom_test</description>
            <point>
                <coordinates>40.751816, -73.959119</coordinates>
            </point>
    </Placemark>
</Document>
</kml>

代码:

while (parser.next() != XmlPullParser.END_TAG) {
    if (parser.getEventType() != XmlPullParser.START_TAG) {
        continue;
    }
    String name = parser.getName();
    if (name.equals("Placemark")) {
        String id = null, date = null, pob = null;
        while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                    continue;
            }
            name = parser.getName();
            if (name.equals("name")) {
                id = readText(parser);
            } else if (name.equals("description")) {
                date = readText(parser);
            } else if (name.equals("point")) {
                parser.nextTag();
            } else if (name.equals("coordinates")) {
                pob = readText(parser);
            }
        }
        myDbHelper.insertData(id, date, pob);

【问题讨论】:

  • 你有什么问题?

标签: android android-xmlpullparser


【解决方案1】:

你的问题是 nextTag() 直接去坐标标签,而 next() 调用给你一个结束标签。

因此,您应该在调用 nextTag 后获取文本,或者直接调用 next 并重新进入 while 循环(使用 next 您是“打开”坐标标记而不是“内部”)。

选项1 nextTag 为下一个:

} else if (name.equals("point")) {
    parser.next();
}

选项2是在getNextTag之后调用getText:

} else if (name.equals("point")) {
    parser.nextTag();
    if (parser.getName().equals("coordinates")) {
        pob = parser.nextText();
    }
} 

【讨论】:

  • 好的,它正在工作,我怎样才能将坐标中的值分成两个表?
  • 我不明白你的问题。如果有效请选择正确答案!!
  • 我的意思是解析值的子字符串,坐标中有2个值。如何准备所有的解析部分?
  • 如果你想分离坐标,你可以做一个 pob.split(",") 它将返回一个包含两个值的字符串数组
猜你喜欢
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多