[英]Freemarker template engine to retrieve data from xml
我有一個格式說的xml
<x>
<y>
<z Name="z"> File Explorer </z>
</y>
</x>
我想編寫一個freemarker模板來檢索內容“文件資源管理器”。 我已經編寫了Java代碼將xml轉換為html。 輸入xml就是xml。
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
configuration.setDefaultEncoding("UTF-8");
InputSource inputSource = new InputSource( new StringReader(xml.asXML()));
root.put("doc", freemarker.ext.dom.NodeModel.parse(inputSource));
result = new StringWriter();
template.process(root, result);
我用xpath嘗試了freemarker模板
<span>${doc["x/y/z[@Name='z']"/]}</span>
但這在轉換時顯示$ {doc [“ x / y / z [@ Name ='z']” /]}而不是
文件管理器
使用Freemarker Ant任務freemarker.ext.ant.FreemarkerXmlTask
:
lib
文件夾 pathElement
元素的location
屬性中 freemarker
元素中的基於basedir
的屬性中 freemarker
元素的template
屬性中 例如:
build.xml文件:
<?xml version="1.0"?>
<project basedir="." default="generate" name="FreeMarker-FAQ">
<taskdef name="freemarker" classname="freemarker.ext.ant.FreemarkerXmlTask">
<classpath>
<fileset dir="lib">
<include name="freemarker.jar"/>
</fileset>
</classpath>
</taskdef>
<target name="generate">
<mkdir dir="html"/>
<freemarker basedir="." template="xml2html.ftl" includes="xml/data.xml" destdir="html"/>
</target>
</project>
data.xml中:
<?xml version="1.0"?>
<root name="test" value="123">
<child name="data" value="456"/>
</root>
xml2html.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<title>${.node.root.@name}</title>
<meta name="keywords" content="FreeMarker, Java, servlet, HTML, template, free software, open source, XML" />
</head>
<body bgcolor="#ffffff">
<h2><a name="top">${.node.root.child.@name}.</a></h2>
</body>
</html>
目錄結構
build.xml文件
然后從包含build.xml
文件的目錄中運行ant
。
參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.