作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我需要访问已编译的 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 投影函数对其进行查询。)最佳答案
您使用的 XmlPull 版本似乎不支持命名空间。尝试使用
org.simpleframework.xml.stream.DocumentProvider
这使用 w3c DOM。
关于android - Android XmlResourceParser 的方便使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944332/
在javascript中,我可以这样写 console.log( person.name || person.nickname || '-' ) 然后会先查找name字段,如果找不到,会回退到nick
在为通用接口(interface)编写回调时,定义他们自己负责创建和访问的本地数据可能很有用。 在 C 中,我只使用一个空指针,类 C 示例: struct SomeTool { int ty
我是一名优秀的程序员,十分优秀!