1

我想制作一个从 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 开发资源'Parsing XML Data'中描述的方法。)

或者,将文档转换为 HTML 并使用WebView? 或者做一些其他的解析技巧,比如使用SimpleXML而不是XmlPullParser反序列化 XML?

4

2 回答 2

0

更大的问题是“什么时候”你这样做?apk 中的 XML 不会保留为 xml,它是已编译的,因此,在运行时加载您描述的 xml 是没有意义的,因为当一切都说完后,您将不得不将其翻译成一堆动态的显示代码。

或者您是说您正在编写一个应用程序,该应用程序获取您的 xml,然后将其转换为您将要剪切并粘贴到您的项目中的 Android 样式 UI XML?

如果您打算简单地使用 WebView,那么您不必担心任何原生 Android UI 小部件(即 TextView),并且您可以以任何您希望的方式呈现 XML,但是,我怀疑这不是您要问的,而且我进一步怀疑您对 Android 使用 XML 的性质有些困惑。

或者您希望将您的 XML 转换为 Android 原生 XML,然后在运行时对其进行扩展?(根据文档,此时这是不可能的:“出于性能原因,视图膨胀在很大程度上依赖于在构建时完成的 XML 文件的预处理。因此,目前无法将 LayoutInflater 与 XmlPullParser 一起使用运行时的纯 XML 文件;它仅适用于从已编译资源(R.something 文件)返回的 XmlPullParser。” 在此处阅读更多内容 )。

我认为您需要稍微澄清一下您的问题才能获得有用的答案。

于 2013-04-01T20:40:06.280 回答
0

在 a 中显示 XML 和一些 CSSWebView是最简单的。

或者,您可以使用 进行预处理XmlPullParser,并且对于渲染/样式设置,您可以使用 Android 的Html类以及 TagHandler 的自定义实现和/或使用 Spannable 做一些事情。(请参阅this answer about using Spannable Strings。)使用TextView.setText(Html.fromHtml()).

于 2013-04-01T23:13:14.570 回答