【问题标题】:HTML to XML Conversion using XSLT in java在 Java 中使用 XSLT 将 HTML 转换为 XML
【发布时间】:2012-03-09 13:31:57
【问题描述】:

嗨,任何人都可以帮助我在 java 中使用 xslt 将 xml 转换为 xml。我在 java 中使用 xslt 将 xml 转换为 html。这是我用于该转换的代码:

import javax.xml.transform.*;

import java.net.*;
import java.io.*;

public class HowToXSLT {

public static void main(String[] args) {

  try {

    TransformerFactory tFactory = TransformerFactory.newInstance();

    Transformer transformer =
      tFactory.newTransformer
         (new javax.xml.transform.stream.StreamSource
            ("howto.xsl"));

    transformer.transform
      (new javax.xml.transform.stream.StreamSource
            ("howto.xml"),
       new javax.xml.transform.stream.StreamResult
            ( new FileOutputStream("howto.html")));
    }
  catch (Exception e) {
    e.printStackTrace( );
    }
  }
}

但是我不知道这个程序的逆过程是把html转换成xml?是否有任何 jar 文件可用于执行此操作?请帮帮我...

【问题讨论】:

    标签: java html xml xslt


    【解决方案1】:

    一般情况下,不可能“反转”转换,因为一般情况下的转换不是 1:1 映射。

    例如,如果转换这样做:

    <xsl:value-of select= "/x * /x"/>
    

    我们得到结果:16

    (我们知道源 XML 文档只有一个元素),

    无法从值16 确定源 XML 文档是否为:

    <x>4</x>
    

    或者是否:

    <x>-4</x>
    

    以上只是一个简单的例子! :)

    【讨论】:

      【解决方案2】:

      这将取决于您希望做什么。 显然,howto.xsl 包含要应用于 xml 以获取 html 的规则。
      您将不得不编写另一个 xsl 文件来执行相反的操作。

      【讨论】:

      • 没错,但我的意思是相反的方向 :-)
      【解决方案3】:

      我相信这是不可能的。 XLST 输入必须符合 XML,而 HTML 不符合 XML(除非您谈论 XHTML)。

      【讨论】:

      • XHTML 部分不是问题;您可以告诉 XSLT 输出格式正确的 XHTML。真正的问题是试图找出哪个 HTML 元素是由 XSLT 的哪个位呈现的。我的意思是,如果 XSLT 已将每一段 XML 数据转换为一个 div,那么您将无法仅从生成的 HTML 中找出哪个 div 是哪个转换的结果。
      • 如果原始转换不是 1:1 映射,则不存在反向转换——这种情况很少见。这就是为什么一般来说这个问题没有解决办法。
      • 感谢您的回复......实际上我的流程是在 java 中使用 xsl 将 xml 转换为 html,但是在将一些样式应用于 html 文件后,我需要使用xsl ?是否可以根据我之前编辑的 html 文件创建新的 xsl?请帮帮我。
      • 我相信这是不可能的,除非你特别小心地创建 HTML。
      【解决方案4】:

      您可能需要先投诉 html xhtml,然后使用 xsl(原始 xsl 的反向),其中包含将 xhtml 文件转换为 xml 的说明。

      【讨论】:

        【解决方案5】:

        不可能,您可以使用 Microsoft.XMLDOM 将 HTML 转换为 XML。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-08
          • 2012-09-29
          • 1970-01-01
          • 1970-01-01
          • 2013-06-12
          • 1970-01-01
          • 2012-02-14
          相关资源
          最近更新 更多