如何通过XSLT合并Java中的2个XML流

use*_*933 8 java xml

我想在Java中合并2个XML流(字符串),必须通过XSLT(我可以改变转换),但问题是XML是一个字符串.有很多例子,但是通过文件.这可以在不保存文件的情况下完成吗?

谢谢.

Chr*_*rau 5

我只知道使用自己的URIResolver实现的方法.

public final class StringURIResolver implements URIResolver {
    Map<String, String> documents = new HashMap<String, String>();

    public StringURIResolver put(final String href, final String document) {
        documents.put(href, document);
        return this;
    }

    public Source resolve(final String href, final String base)
    throws TransformerException {
        final String s = documents.get(href);
        if (s != null) {
            return new StreamSource(new StringReader(s));
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

final String document1 = ...
final String document2 = ...
final Templates template = ...
final Transformer transformer = template.newTransformer();
transformer.setURIResolver(new StringURIResolver().put("document2", document2));
final StringWriter out = new StringWriter();
transformer.transform(new StreamSource(new StringReader(document1)),
    new StreamResult(out));
Run Code Online (Sandbox Code Playgroud)

在转换中,请像这样引用它:

<xsl:variable name="document2" select="document('document2')" />
Run Code Online (Sandbox Code Playgroud)