Khi tôi cần truy cập tài nguyên XML được biên soạn của Android, có vẻ như tôi không thể sử dụng openRawResource(resId)
vì nó cung cấp cho tôi một tệp nhị phân được biên dịch.Sử dụng thuận tiện Android XmlResourceParser?
Cách duy nhất tôi tìm thấy để nhận XML là sử dụng getXml(resId)
trả về XmlResourceParser
(triển khai XmlPullParser
).
Làm thế nào tôi có thể thuận tiện deserialize XML phức tạp biên dịch (nhưng không lớn) từ tài nguyên Android?
Tôi đã cố gắng để hack khuôn khổ Simple XML: (. Mã Scala ở trên được đơn giản hóa)
val serializer = new Persister()
serializer.read(classOf[AFoo],
new NodeReader(new PullReader(r.getXml(resId))).readRoot)
Tuy nhiên nó không thành công:
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ó Trình gỡ rối XML không gọi
getPrefix
? - Hoặc đã có thư viện Scala hiện có xây dựng một cây
Node
từXmlPullParser
? (Vì vậy, nó sẽ có thể truy vấn nó bằng cách sử dụng chức năng chiếu Scala.) - Hoặc bạn có gợi ý nào khác về cách đọc XML được biên dịch nhỏ nhưng phức tạp từ tài nguyên không?
Thay vì lưu trữ các file xml trong res/xml - Bạn đã cố gắng lưu trữ chúng trong res/raw? Đó là cách tôi lưu trữ các tài liệu xml mà tôi muốn có quyền truy cập trực tiếp vào. Nếp nhăn để lưu lược đồ/biểu định kiểu là phần mở rộng cần phải là 'xml' - những gì tôi làm là thêm phần mở rộng thực vào tên tệp .... do đó indent.xsl trở thành xsl_indent.xml –