java - XmlPullParser 正在跳过 START_TAG?

标签 java android android-xmlpullparser

所以我尝试使用 XmlPullParser 解析 GPX 文件。 在大多数情况下,我可以正常工作,但注意到我没有得到我所期望的结果。 文件 fragment :

<?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 事件标签。那么我的下一个事件将是文本事件,文本将包含 \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。

关于java - XmlPullParser 正在跳过 START_TAG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469969/

相关文章:

java - 错误:Process 'command '/usr/local/android-studio/jre/bin/java'' finished with non-zero exit value 2

android - 如何在改造Android中发送对象数组?

java - 单线程中断 sleep

java - 在java中解析XML文件的元数据属性

android - Eclipse中如何导入ViewPagerIndicator库

android - Android 上是否可以进行数据包转发?

java - XmlPullParser 从 START_DOCUMENT 跳转到 END_DOCUMENT 事件类型

android - 如何解析 Dropbox 上托管的 XML 文件,使其不渲染而是下载?

java - 获取与 JTable 单元格相关的单个 MousePoint