代码之家  ›  专栏  ›  技术社区  ›  Burjua

如何在Android上将XML转换为HTML?

  •  0
  • Burjua  · 技术社区  · 16 年前

    我对Java和Android比较新,在我的Android应用程序中,我需要得到XML文件,将其转换并显示给用户。

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

    我想在网上找点东西,但找不到任何东西((

    我该怎么做?任何想法或联系都将受到赞赏,

    谢谢

    3 回复  |  直到 16 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    将XML转换为HTML的常用工具是XSLT。搜索这样的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 XPath . This question 显示某人在Android上使用XOM(编写XML)和API级别4。您可以利用XPath特性以及序列化特性。它需要一个小型的外部库,XOM的JAR。我不知道它是否与API级别3兼容。

        2
  •  0
  •   yvolk    13 年前

    请参阅作为“andstatus”应用程序一部分创建的完整工作示例。 它使用XSLT显示本地化的!!)帮助活动的Web视图中的应用程序更改日志。

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

    1. 没有任何依赖项的小型实用程序类(即,它可以很容易地重用),它具有以下功能:

      /**

      • 使用提供的XSL样式表转换XML输入文件并在Web视图中显示
      • @托管WebView的参数活动
      • @应在其中显示输出的参数resview webview
      • @要转换的参数resxml xml xml文件。此文件已本地化!它应该放在“原始”文件夹中
      • @参数resxsl xsl样式表。在“原始”文件夹中。可能是所有语言的单一语言… ** 公共静态void towabview(活动活动,int resview,int resxml,int resxsl){ … } 请参阅完整的源代码: Xslt.java
    2. 其用法示例:请参见 HelpActivity.java

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

        3
  •  0
  •   Community Mohan Dere    9 年前

    使用xslt,xslt将XML转换为HTML,我们可以在android webview中显示。 This question 会有帮助的。