【问题标题】:XmlPullParser skipping START_TAG?XmlPullParser 跳过 START_TAG?
【发布时间】:2019-12-19 13:14:10
【问题描述】:

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

<?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>

为了这个问题,我在这里修剪了不重要的标签,假设文件通过了所有命名空间的验证。 (因为完整的文件可以。)

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

我似乎在使用nextToken()next() 调用时都明白这一点。这是预期的吗?

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

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

【问题讨论】:

    标签: java android android-xmlpullparser


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多