gpt4 book ai didi

android - Android XmlResourceParser 的方便使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:42 27 4
gpt4 key购买 nike

当我需要访问已编译的 Android XML 资源时,我似乎无法使用 openRawResource(resId),因为它给了我一个已编译的二进制文件。

我发现获取 XML 的唯一方法是使用返回 XmlResourceParser(实现 XmlPullParser)的 getXml(resId) .

如何从 Android 资源中方便地反序列化复杂的已编译 XML(但不大)?

我试图破解 Simple XML 框架:

val serializer = new Persister()
serializer.read(classOf[AFoo],
new NodeReader(new PullReader(r.getXml(resId))).readRoot)

(上面的 Scala 代码被简化了。)

然而它失败了:

java.lang.RuntimeException: getPrefix not supported
at android.content.res.XmlBlock$Parser.getPrefix(XmlBlock.java:156)
at org.simpleframework.xml.stream.PullReader$Start.<init>(PullReader.java:373)
at org.simpleframework.xml.stream.PullReader.start(PullReader.java:143)
at org.simpleframework.xml.stream.PullReader.read(PullReader.java:109)
at org.simpleframework.xml.stream.PullReader.read(PullReader.java:117)
at org.simpleframework.xml.stream.PullReader.next(PullReader.java:89)
at org.simpleframework.xml.stream.NodeReader.readElement(NodeReader.java:111)
at org.simpleframework.xml.stream.NodeReader.readRoot(NodeReader.java:85)
  • 有没有不调用 getPrefix 的 XML 反序列化器?
  • 或者是否已经存在从 XmlPullParser 构建 Node 树的 Scala 库? (因此可以使用 Scala 投影函数对其进行查询。)
  • 或者对于如何从资源中读取小而复杂的已编译 XML,您有任何其他提示吗?

最佳答案

您使用的 XmlPull 版本似乎不支持命名空间。尝试使用

org.simpleframework.xml.stream.DocumentProvider

这使用 w3c DOM。

关于android - Android XmlResourceParser 的方便使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com