如何在Android中解析和呈现复杂的XML文档?

时间:2013-04-01 20:04:19

标签: android xml

我想创建一个从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?

2 个答案:

答案 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())