2017-01-27 5 views
0

私はいくつかのXSLTチュートリアルで作業していますが、それらはすべて入力ファイルと出力ファイルの使用について話しています。私の特定のケースでは、私はXMLとXSLをすべて文字列として扱います - 実行時にデータベースから読み込み、作業しているレコードに応じて変更します。XSLT、ファイルではなく入出力文字列を使用したXMLからHTMLへ

StreamSourceを操作してファイル名の代わりに実際の文字列を与えるために、ある種の変換を行う方法はありますか?

私が話している:

XMLやXLSは、実際のXMLまたは実際のXSLを含む、両方の文字列である
 TransformerFactory factory = TransformerFactory.newInstance(); 
     Transformer transformer = factory.newTransformer(new StreamSource(xsl)); 
     StreamSource src = new StreamSource(new FileInputStream(xml)); 

答えて

2

StringReaderを使用し、StreamSource constructor that takes the reader as argumentsを使用してください。

がここにMCVEです:

package transformStrings; 

import java.io.StringReader; 
import java.io.StringWriter; 

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.stream.StreamSource; 

public class transformFromStrings { 

    public static void main(String[] args) throws TransformerException 
    { 
      StringReader xmlReader = new StringReader("<x/>"); 
      StreamSource xmlSource = new StreamSource(xmlReader); 

      StringReader xslReader = new StringReader("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:template match=\"/\">OMG!</xsl:template></xsl:stylesheet>"); 
      StreamSource xslSource = new StreamSource(xslReader); 

      TransformerFactory factory = TransformerFactory.newInstance(); 
      Transformer transformer = factory.newTransformer(xslSource); 

      StringWriter resultWriter = new StringWriter(); 
      transformer.transform(xmlSource, new javax.xml.transform.stream.StreamResult(resultWriter)); 
      System.out.println(resultWriter.toString()); 
    } 
} 
+0

私は自分自身と同じ操作を行い、私は多くの場合、人々は基本を知っていると仮定簡潔な答えを与えます。彼らに仕事をさせるのは良いことです。しかし、時には私は彼らの旅の途中で次の一歩を借りて行きます。 –

関連する問題