我想创建一个从Web获取需要解释和呈现的XML文档的应用程序,例如:
<doc>
<entity type="person">You</entity> can also look at <ref to="A">A</ref> or <ref to="B">B</ref>.
</doc>
文档的DTD非常复杂,结构不是静态的,可能包含数千个标签。
假设我希望将ref
元素呈现为可点击元素,暂时忽略其他标记(仅将它们显示为普通文本)。
我应该使用XmlPullParser
扫描文件,从文档中创建内部数据结构,并为所有文本序列创建TextViews
,并使ref
标记可点击TextViews
? (这是Android dev资源'Parsing XML Data'中描述的方法。)
或者,将文档转换为HTML并使用WebView
是否更好,性能和用户体验?或者做一些其他解析技巧,比如使用SimpleXML而不是XmlPullParser
来反序列化XML?
答案 0 :(得分:0)
更大的问题是“你什么时候”这样做? apk中的XML不会保留为xml,它是编译的,所以,加载你在运行时描述的xml是没有意义的,因为当所有的说完成后你将不得不将它转换成一堆动态显示代码。
或者你是说你正在编写一个带xml的应用程序,然后将其转换为你要剪切并粘贴到项目中的Android风格UI XML?
如果您计划简单地使用WebView,那么您不必担心任何原生Android UI小部件(即TextView),并且您可以以任何方式呈现XML,但是,我怀疑这不是您的意思问,我还怀疑你对Android的XML使用性质感到有些困惑。
或者您希望将XML转换为Android原生XML,然后在运行时对其进行充气? (根据文档,目前不可能: “出于性能原因,视图通胀在很大程度上依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时使用带有XmlPullParser的LayoutInflater而不是纯XML文件;它只适用于XmlPullParser从已编译的资源(R.something文件)返回。“ read more here)。
我认为你需要澄清一下你的问题才能得到有用的答案。
答案 1 :(得分:0)
在WebView
中显示XML和一些CSS是最简单的。
或者,您可以使用XmlPullParser
进行预处理,对于渲染/样式,您可以使用Android的Html类以及TagHandler的自定义实现和/或使用Spannable执行某些操作。 (有关使用Spannable字符串的信息,请参阅this answer。)使用TextView.setText(Html.fromHtml())
。