0

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

  1. 我查询数据库并得到一个XMLResource, 或 aResourceSet结果。

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

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

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

4

1 回答 1

1

XMLResource提供了getContentAsSAX一种将 XML 直接提供给 SAX ContentHandler 的方法。并且 javax.xml.transform 提供了 a 的概念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);
于 2013-09-30T14:32:00.893 回答