SD卡上 xml 的 XmlPullParser 不会忽略空格

发布于 2024-12-28 01:21:32 字数 503 浏览 3 评论 0原文

我正在使用 XmlPullParser 从应用程序的嵌入式资源或从 SD 读取相同的 XML。问题是,当我从资源读取 xml 时,空白会被忽略,但 sdcard 上的 xml 不会被忽略。

以下是我如何在资源中为 xml 创建 PullParser (进一步拉取代码对于这两种情况都很常见)

XmlPullParser parser = context.getResources().getXml(resId);

在这里我为 sdcard 上的 xml 创建解析器

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();

FileReader fileReader = new FileReader(filePath);

parser.setInput(fileReader);

I am reading the same XML using XmlPullParser either from embedded resource of the app or from SD. The problem is that when I read xml from resource whitespaces are ignored but for xml on sdcard are not ignored.

Here is how I create PullParser for xml in resource (further pulling code is common for both cases)

XmlPullParser parser = context.getResources().getXml(resId);

And here I create parser for xml on sdcard

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();

FileReader fileReader = new FileReader(filePath);

parser.setInput(fileReader);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不忘初心 2025-01-04 01:21:32

提示:.apk 中的 XML资源 在构建过程中被编译为二进制格式。这也可能会修剪掉“不必要的”空白。为了避免这种编译,您可以将 XML 资源放入 assets 文件夹中,并从那里读取 XML。

context.getResources().getXml(resId); 当然将不再起作用;您的资产不会分配资源 ID。您必须使用原始文件名。

编辑:

的文档getXml() 说:

此处返回的 XmlPullParser 实现有一些限制
功能。特别是,您无法更改其输入,只能更改
高级解析事件可用(因为该文档是
在构建时为您预先解析,其中涉及合并文本和
剥离评论)。

Hint: The XML resources inside your .apk are compiled to a binary format during the build process. This may also trim away "unnecessary" whitespaces. To avoid this compilation you can put your XML resource into the assets folder and read your XML from there.

context.getResources().getXml(resId); will then of course not work anymore; your asset will not have a resource id assigned. You'll have to use the original filename.

Edit:

Documentation for getXml() says:

The XmlPullParser implementation returned here has some limited
functionality. In particular, you can't change its input, and only
high-level parsing events are available (since the document was
pre-parsed for you at build time, which involved merging text and
stripping comments).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文