2010-04-28 28 views
8

我想合併2個XML流(字符串)在Java中,必然由XSLT(我可以改變轉換),但問題是XML來作爲串。有很多例子,但通過文件。 這可以做到不將它們保存在文件中?如何通過XSLT合併Java中的2個XML流

謝謝。

回答

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')" /> 
+0

是的!有用!!!非常感謝你!!! :)) – user327933 2010-04-28 16:34:25

+0

+1拳頭使用,我見過。我已經調整過使用 2013-02-13 14:10:31

0

看看this tutorial,它有你需要的一切(有例子)。

如果你想變換來在字符串格式的XML,使用這樣的:

Templates template = ...; 
String xml = ...; 
Transformer transformer = template.newTransformer(); 
Writer out = new StringWriter(); 
transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(out)); 
+2

這不回答如何從字符串獲得輸入文檔。但問題是如何合併兩個文檔。其中一個文檔必須由變換本身讀取(如本教程的第三個示例中所示),或者作爲參數給出。 – 2010-04-28 14:58:01