XSLT using Java



>我在其中一个堆栈溢出帖子中遇到了以下示例 -

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public class TestMain {
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new File("input.xml"));
transformer.transform(text, new StreamResult(new File("output.xml")));
}
}

在上面的例子中,我想使用输入作为字符串,输出作为字符串,并且从文件中只读xslt。有可能做到这一点吗?

看看StreamSource构造函数与InputStreamhttps://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/StreamSource.html#StreamSource(java.io.InputStream)

您可以从string创建输入,如下所示:

InputStream input = new ByteArrayInputStream("<your string input>".getBytes(StandardCharsets.UTF_8));
Source text = new StreamSource(input);

并使用StringWriterStreamResult将您的输出作为string

StringWriter outputWriter = new StringWriter();
StreamResult result = new StreamResult( outputWriter );
transformer.transform( text, result );  
String outputAsString = outputWriter.getBuffer().toString(); 

我能够做类似的事情,这为我提供了结果 -

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public class TestMain {
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);
String xmlData = "<xml><data>test</data>";
InputStream stream = new ByteArrayInputStream(xmlData.getBytes(StandardCharsets.UTF_8));
Source text = new StreamSource(stream);
StringWriter outWriter = new StringWriter();
StreamResult result = new StreamResult( outWriter );
transformer.transform(text, result);
StringBuffer sb = outWriter.getBuffer(); 
String finalstring = sb.toString();
}
}

最新更新