您的位置:首页 > Web前端 > HTML

dom4j利用xsl解析生成html

2010-07-19 22:28 330 查看
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;

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

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.HTMLWriter;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;

public class TransformerTest {

public static void main(String[] args) throws Exception {

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(new File("test.xsl")));
SAXReader reader = new SAXReader();
DocumentSource source = new DocumentSource(reader.read("test.xml"));
DocumentResult result = new DocumentResult();
transformer.transform(source, result);
Document transformedDoc = result.getDocument();
toPretyHtml(transformedDoc);
}

public static Document read(String fileName) throws MalformedURLException, DocumentException {

SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));

return document;
}

public static void toPretyHtml(Document document) throws Exception {

StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
HTMLWriter writer;
try {
writer = new HTMLWriter(sw, format);
Document doc = DocumentHelper.parseText(document.asXML());
writer.write(doc);
writer.flush();
System.out.println(sw.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

// public static Document styleDocument(Document document, String stylesheet)
// throws Exception {
//
// TransformerFactory factory = TransformerFactory.newInstance();
// Transformer transformer = factory.newTransformer(new StreamSource(stylesheet));
// DocumentSource source = new DocumentSource(document);
// DocumentResult result = new DocumentResult();
// transformer.transform(source, result);
// Document transformedDoc = result.getDocument();
//
// return transformedDoc;
// }
//
// public static void main(String[] argv) throws Exception {
//
// Document document = read("test1.xml");
// Document transformedDoc = styleDocument(document, "test1.xsl");
//
// //System.out.println(transformedDoc.asXML());
// toPretyHtml(transformedDoc);
// }
}

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="doc">
<html>
<out>
<xsl:value-of select="." />
</out>
</html>
</xsl:template>
</xsl:stylesheet>

<?xml version="1.0"?>

<doc>Hello</doc>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: