簡體   English   中英

Freemarker模板引擎從xml檢索數據

[英]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

  • 轉到包含freemarker JAR文件的lib文件夾
  • 復制路徑
  • 將其粘貼到Ant任務的pathElement元素的location屬性中
  • 復制XML文件的路徑
  • 將其粘貼到Ant任務的freemarker元素中的基於basedir的屬性中
  • 復制FTL文件的路徑
  • 將其粘貼到Ant任務的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>
  • XML文件

data.xml中:

<?xml version="1.0"?>
<root name="test" value="123">
  <child name="data" value="456"/>
</root>
  • Freemarker模板

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文件

    • / lib目錄
      • freemarker.jar
    • / HTML
      • data.html
    • / XML
      • data.xml中

然后從包含build.xml文件的目錄中運行ant

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM