【问题标题】:Can i parse a binary XML file ( in res/xml ) with a SAX parser我可以使用 SAX 解析器解析二进制 XML 文件(在 res/xml 中)吗
【发布时间】:2011-06-20 21:56:56
【问题描述】:

澄清我的问题:-)

我想要两全其美。

  1. 拥有压缩xml的速度 文件
  2. speed of the SAX parser ( 通过一个 XmlResourceParser 是 通常与二进制文件一起使用)

最重要的问题是:这可以做到吗?

我最接近解决方案的是。

  • 打开原始资源(不是二进制 格式)
  • 使用 XmlResourceParser 解析二进制 xml 文件

我希望有人可以帮助我在这种情况下走得更远。

编辑:反映 SAX 解析器速度的链接

【问题讨论】:

  • 我开发了一个不依赖 AAPT 的 APK 提取器。它包括可以解析任何 Android 二进制 XML 内容的解析器 - code.google.com/p/apk-extractor

标签: android xml performance binary sax


【解决方案1】:

对于原始资源中的 XML,SAX 解析器比 XmlResourceParser 更有效。只需使用 XmlResourceParser。

【讨论】:

  • 你能给我一个可以支持你的声明的来源吗?谢谢
  • XmlPullParser 在源代码中,您没有以原始形式访问预解析的 XML;它从普通的输入流中命中 Xml。在这种情况下,SAX 解析器可能会更快;但是如果您可以选择将文件放入 res/raw 中,那么 pull parser 会更快。
  • 我上次检查时,来自资源的 XmlPullParser 比任何其他解析器快 10-100 倍。甚至没有必要考虑它。很多解析工作都是在构建时由 aapt 完成的;这些与在设备上解析普通/真实的 XML 文档完全不同。
  • @ProgrammerXR -- 顺便说一句,如果您不知道 hackbod 是主要的 Android 开发人员之一,并且与您一样具有权威性。
  • 感谢大家回复 :-)
【解决方案2】:

您可以放置​​您的 xml 文件资产文件夹,您可以使用 Sax 解析器

InputStream xmlFileStram = getAssets().open(filePath); // this gives the file in your asset folder
XmlHandler xmlHandler = new XmlHandler(activity);
SAXParserFactory.newInstance().newSAXParser().parse(xmlFileStram, xmlHandler);

【讨论】:

  • 这将比使用 XmlPullParser 将文件放入 res/xml 中慢很多,因此非常不推荐。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 2011-04-30
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 2012-12-18
相关资源
最近更新 更多