當我需要訪問編譯的Android XML資源時,似乎我不能使用openRawResource(resId)
,因爲它給了我一個編譯好的二進制文件。Android XmlResourceParser的便捷使用?
我發現獲取XML的唯一方法是使用返回XmlResourceParser
(實現XmlPullParser
)的getXml(resId)
。
如何方便地從Android資源反序列化複雜的編譯XML(但不是很大)?
我試圖破解Simple XML框架:(上面的Scala代碼被簡化)
val serializer = new Persister()
serializer.read(classOf[AFoo],
new NodeReader(new PullReader(r.getXml(resId))).readRoot)
但它失敗:
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)
- 有什麼XML解串器,不叫
getPrefix
? - 或者是已經存在Scala庫,從
XmlPullParser
建立Node
樹? (因此可以使用Scala投影函數來查詢它。) - 或者您有任何其他提示如何從資源中讀取小而複雜的編譯XML?
而不是存儲在res/xml的XML文件的 - 你試圖將它們存儲在res /生?這就是我如何存儲我想要直接訪問的xml文檔。 保存模式/樣式表的難點在於擴展名需要'xml' - 我所做的是預先對文件名進行實際擴展....所以indent.xsl變爲xsl_indent.xml – 2018-02-25 16:16:19