2013-04-01 25 views
1

我要作出这样的获取从需要加以解释和呈现,例如网页XML文档的应用程序:如何在Android中分析和呈现复杂的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?

+2

将输入转换为HTML并将其显示在WebView中) – ChristopheCVB

+1

呃...使用XML Android已经用于UI的XML ......? – 2013-04-01 20:13:33

+0

那么你是指在XML文档中加载并将其转换为Android布局(XML)文档并在运行时将其膨胀?你认为这是有效的,特别是当你的文件包含数千个标签时? – Maarten

回答

0

显示XML和WebView中的一些CSS是最简单的。

或者,您可以使用XmlPullParser进行预处理,并且对于渲染/样式,您可以使用Android的Html类与TagHandler的自定义实现结合使用和/或使用Spannable进行一些操作。 (请参阅this answer关于使用Spannable字符串。)使用TextView.setText(Html.fromHtml())

0

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

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

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

或者您是否希望将您的XML转换为Android原生XML,然后在运行时膨胀它? (根据文档,这是不可能的: “出于性能方面的原因,查看通胀在很大程度上依赖于在构建时完成的XML文件的预处理。因此,目前无法将LayoutInflater与XmlPullParser结合使用一个纯XML文件在运行时;它只适用于从编译资源返回的XmlPullParser(R.something文件)。“ read more here)。

我想你需要澄清一下你的问题,以获得有用的答案。

+0

很多人今晚downvoting ...这是怎么回事?无论如何,我说我想将通过Web服务获得的XML转换为Android Views,并且由于有很多标签,我想知道什么是高效的,以及是否有任何我应该注意的地方。就这样。 – Maarten

+0

但是,我明白你的愿望,这是不可能的。您唯一的选择是创建您自己的解析器/渲染器,它会遍历您的XML并根据您的XML定义手动添加视图(无论何种类型)。接下来的问题就是,你建立了什么样的用户界面,并且你可以用HTML来建立它(并将它显示在WebView中),因为这种方法很不重要。如果没有,你将不得不提出一些非常认真的想法,你将如何模拟自己的android XML,以覆盖所有的基础。 –

+0

Ehhhh,以及我知道这是可能的,因为这是[XML解析器示例](http://developer.android.com/training/basics/network-ops/xml.html)所做的。我只是说,有多种可能性,我想知道我的情况中最好的一种。 – Maarten