XmlPullParser skipping START_TAG?



所以我正在尝试使用XmlPullParser解析GPX文件。 在大多数情况下,我让它工作,但注意到我没有得到我所期望的。 该文件的一个片段:

<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1">
<wpt lat="34.767778" lon="-88.078889">
<name>EG1325</name>
<type>Waypoint</type>
<extensions>
<groundspeak:cache>
<groundspeak:country>United States</groundspeak:country>
</groundspeak:cache>
</extensions>
</wpt>
</gpx>

出于此问题的目的,我在此处修剪了不重要的标记,假设该文件通过验证并表示了所有命名空间。(因为完整文件确实如此。

当我越过<type>标签时,问题就来了。 使用next()nextToken(),我将获得<type>标签的END_TAG事件。然后我的下一个事件将是一个 TEXT 事件,文本将包含n.之后的事件将是START_TAG,但用于<groundspeak:cache>而不是<extensions>标签。

我似乎在使用nextToken()next()调用时都得到了这个。这是意料之中的吗?

编辑以添加:我在 XmlPullParser 代码中设置的唯一设置是:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);

检查您的 xml 文件。一些xml文件在开始时包含一些额外的字节,具体来说就是"EF BB BF"。它被称为BOM(字节顺序标记)。当 xml 包含这些额外的字节时,我们的 XmlPullParser 无法正常工作,并且表现得像没有START_TAG事件并转到END_DOCUMENT。

相关内容

  • 没有找到相关文章

最新更新