Quando ho bisogno di accedere a risorse XML Android compilate, sembra che non sia possibile utilizzare openRawResource(resId)
poiché mi fornisce un binario compilato.Uso pratico di Android XmlResourceParser?
L'unico modo che ho trovato per ottenere l'XML è quello di utilizzare getXml(resId)
che restituisce XmlResourceParser
(che implementa XmlPullParser
).
Come posso deserializzare comodamente complessi XML compilati (ma non grandi) da risorse Android?
ho cercato di incidere il quadro Simple XML: (. Il codice Scala sopra è semplificata)
val serializer = new Persister()
serializer.read(classOf[AFoo],
new NodeReader(new PullReader(r.getXml(resId))).readRoot)
Tuttavia non riesce:
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)
- C'è qualche Deserializzatore XML che non chiama
getPrefix
? - Oppure esiste già una libreria Scala che costruisce un albero
Node
dalloXmlPullParser
? (Quindi sarà possibile interrogarlo usando la funzione di proiezione di Scala.) - Oppure avete qualche altro suggerimento su come leggere piccoli ma complessi XML compilati da risorse?
Invece di memorizzare i file XML in res/xml - hai provato a loro memorizzazione in res/raw? È così che immagazzino i documenti xml a cui voglio avere accesso diretto. La ruga del salvataggio degli schemi/fogli di stile è che l'estensione deve essere 'xml' - quello che faccio è anteporre l'estensione effettiva al nome del file .... quindi indent.xsl diventa xsl_indent.xml –