我想用Java合并2个XML流(字符串),必须通过XSLT(我可以改变转换),但问题是XML是一个字符串。有很多例子,但是通过文件。 这可以在不保存文件的情况下完成吗?
感谢。
答案 0 :(得分: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;
}
}
像这样使用:
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));
在转换中,请像这样引用它:
<xsl:variable name="document2" select="document('document2')" />
答案 1 :(得分:0)
看看this tutorial,它有您所需要的一切(带示例)。
如果要转换以String格式提供的XML,请使用以下内容:
Templates template = ...;
String xml = ...;
Transformer transformer = template.newTransformer();
Writer out = new StringWriter();
transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));