【问题标题】:How can I transform xml to html on android?如何在android上将xml转换为html?
【发布时间】:2011-04-12 16:25:24
【问题描述】:

我对 java 和 android 比较陌生,在我的 android 应用程序中,我需要获取一个 XML 文件,对其进行转换并将其显示给用户。

我知道如何解析 XML,但我不想解析它并在之后生成视图。我想将其转换为 HTML 并显示在 WebView 中。

我试图在 Internet 上查找某些内容,但找不到任何内容。

我该怎么做?任何想法或链接将不胜感激,

谢谢

【问题讨论】:

    标签: java html android xml transform


    【解决方案1】:

    用于将 XML 转换为 HTML 的常用工具是 XSLT。在 SO 中搜索 XSLT 教程,您会得到一些不错的结果。

    Here is another question 展示了一位开发人员如何在 Android 上使用 XSLT。 也可以搜索Transformer在Java中的使用示例,如this helpful article

    // JAXP reads data using the Source interface
    Source xmlSource = new StreamSource(xmlFile);
    Source xsltSource = new StreamSource(xsltFile);
    
    // the factory pattern supports different XSLT processors
    TransformerFactory transFact =
            TransformerFactory.newInstance();
    Transformer trans = transFact.newTransformer(xsltSource);
    
    trans.transform(xmlSource, new StreamResult(System.out));
    

    更新: 对于旧版本的 Android java API:
    This article 展示了如何使用 SAX parser 解析输入 XML,然后使用 XmlSerializer 输出 XML。后者可以轻松输出您想要的任何 XHTML。两者都从 API 级别 1 开始可用。

    不幸的是,我没有看到在 API 级别 3 中执行 XPath 的方法,但如果您的输入 XML 不是太复杂,您应该能够编写自己的转换代码。我知道您“不想解析它并在之后生成视图”,但如果您的意思是您甚至不想使用 Android 提供的 XML 解析器,那么我不知道有任何替代方案。

    更新 2: 我刚刚了解了XOM, which supports a subset of XPathThis question 显示有人在 Android 上使用 API 级别 4 的 XOM(编写 XML)。您可以利用 XPath 功能以及序列化功能。它需要一个小的外部库,XOM 的 jar。不知道是不是兼容API level 3。

    【讨论】:

    • 非常感谢您的回答,我知道 XSLT,但据我所知,它在 android 中不受支持(我在 SO 和 Google 中都找不到任何关于它的信息)。关于您提供的代码,android 不提供 javax.xml.transform 包,所以我不能使用所有这些类。我读过不建议向 android 添加外部类。是真的吗?
    • 好的,尽管有建议,我还是导入了这个包,现在我得到了Conversion to Dalvik format failed with error 1
    • @Burjua: "android 不提供 javax.xml.transform 包" 你使用的是什么版本的 API?我链接到的 android 文档说“从 API 级别 8 开始”。
    • 实际上我正在使用 API 级别 3,因为我希望 1.5 以来的 android 能够运行我的应用程序。确实,在我更改了项目构建目标之后它可以工作,但是旧版本的 android 呢?
    • @Burjua, ibm.com/developerworks/opensource/library/x-android/index.html 展示了如何使用 SAX 解析器解析输入 XML,然后使用 XmlSerializer 输出 XML。后者可以轻松地输出您想要的任何 XHTML。两者都从 API 级别 1 开始可用。
    【解决方案2】:

    请查看作为“AndStatus”应用程序的一部分创建的完整工作示例。 它使用 XSLT 在 HelpActivity 的 Web 视图中显示本地化 (!) 应用程序更改日志。

    工作示例由以下部分组成:

    1. 没有任何依赖关系的小型实用程序类(即可以轻松重用),具有此功能:

      /**

      • 使用提供的 XSL 样式表转换 XML 输入文件并将其显示在 WebView 中
      • @param activity 托管 WebView 的活动
      • @param resView WebView 应该在其中显示输出
      • @param resXml 要转换的 XML 文件。该文件已本地化!它应该放在“raw-”文件夹中
      • @param resXsl XSL 样式表。在“原始”文件夹中。可能是所有语言的单一... */ 公共静态无效 toWebView(活动活动,int resView,int resXml,int resXsl){ ... } 在此处查看完整的源代码:Xslt.java
    2. 其用法示例:见HelpActivity.java

    3. 要转换的 XML 文件:changes.xml 以及相应的 XSL 样式表:changesxsl.xsl

    【讨论】:

      【解决方案3】:

      使用 XSLT,XSLT 将您的 XML 转换为我们可以在 Android Webview 中显示的 HTML。 This question 会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-14
        • 2013-04-01
        • 2019-12-06
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        • 2012-02-06
        相关资源
        最近更新 更多