【问题标题】:How to handle XML in Java retrieving data from an xml database如何在 Java 中处理 XML 从 xml 数据库中检索数据
【发布时间】:2013-10-06 04:55:21
【问题描述】:

我在我的 java web 应用程序(mvc 范例)中使用 eXist-db。 我想从数据库中检索 xml 数据,然后使用 XSLT 转换来转换这个 xml。这是我经历的步骤。

  1. 我查询数据库,得到XMLResourceResourceSet 作为结果。

  2. 现在我必须使用 XSLT 转换来转换从数据库中检索到的 XML(作为 XMLResource)。

    由于 XSLT 转换(使用 javax.xml.transform.Transformer)需要一个 xml Source 作为参数,我必须从 XMLResource 转换为 StreamSource

但这是处理 xml 资源的最佳方式吗?我应该把我的 XMLResource 转换成别的东西吗?

【问题讨论】:

    标签: java xml xslt


    【解决方案1】:

    XMLResource 提供getContentAsSAX method 以将 XML 直接提供给 SAX ContentHandler。 javax.xml.transform 提供了TransformerHandler 的概念,将Transformer 公开为SAX ContentHandler。所以你可以结合使用这两个:

    Source stylesheet = ... // however you're loading your stylesheet
    TransformerHandler handler = ((SAXTransformerFactory)transformerFactory)
                                  .newTransformerHandler(stylesheet);
    Result result = ... // StreamResult, DOMResult etc.
    handler.setResult(result);
    xmlResource.getContentAsSAX(handler);
    
    // result now holds the result of the transformation
    

    对于反方向,如果您需要XMLResource 作为转换的目标,那么您可以将SAXResult 与普通Transformer 一起使用

    Source stylesheet = ... // however you're loading your stylesheet
    Transformer transformer = transformerFactory.newTransformer(stylesheet);
    Source source = ... // StreamSource, DOMSource, etc.
    Result result = new SAXResult(xmlResource.setContentAsSAX());
    transformer.transform(source, result);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2023-03-18
      相关资源
      最近更新 更多