जब मुझे एक संकलित एंड्रॉइड एक्सएमएल संसाधनों तक पहुंचने की आवश्यकता होती है, तो ऐसा लगता है कि मैं openRawResource(resId)
का उपयोग नहीं कर सकता क्योंकि यह मुझे एक संकलित बाइनरी देता है।एंड्रॉइड XmlResourceParser का सुविधाजनक उपयोग?
एक्सएमएल प्राप्त करने का एकमात्र तरीका getXml(resId)
का उपयोग करना है जो XmlResourceParser
(जो XmlPullParser
लागू करता है) का उपयोग करता है।
मैं एंड्रॉइड संसाधनों से जटिल संकलित एक्सएमएल (लेकिन बड़ा नहीं) कैसे आसानी से deserialize कर सकते हैं?
मैं Simple एक्सएमएल ढांचे को हैक करने की कोशिश की है: (। ऊपर स्काला कोड सरल है)
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 deserializer जो
getPrefix
पर कॉल नहीं करता है? - या क्या पहले से ही स्कैला लाइब्रेरी मौजूद है जो
XmlPullParser
सेNode
पेड़ बनाती है? (इसलिए स्कैला प्रोजेक्शन फ़ंक्शन का उपयोग करके इसे क्वेरी करना संभव होगा।) - या क्या आपके पास कोई अन्य संकेत है कि संसाधनों से छोटे लेकिन जटिल संकलित XML को कैसे पढ़ा जाए?
- आप उन्हें रेस में भंडारण की कोशिश की है/कच्चे? इस प्रकार मैं एक्सएमएल दस्तावेजों को स्टोर करता हूं जिन्हें मैं सीधे एक्सेस करना चाहता हूं। स्कीमा/स्टाइलशीट को सहेजने के लिए शिकन यह है कि एक्सटेंशन को 'xml' होना आवश्यक है - जो मैं करता हूं वह फ़ाइल नाम में वास्तविक एक्सटेंशन प्रीपेड करता है .... इसलिए indent.xsl xsl_indent.xml –