2013-10-31 61 views
0

這是一種在Freemarker中創建Xml節點的方法嗎?
<field type="select" value="country" name="country" >
難道是從這個Xml元素中創建一個field節點的方法嗎?我在freemarker文檔中的任何地方找不到它。Freemarker:創建Xml節點

回答

2

如果您在Java中使用String中的XML,並且希望將其作爲模型中的XML節點放入,它將向您展示Freemarker documentation中的方式。

由於某些原因,示例代碼從文件中讀取。您也可以從org.xml.sax.InputSource解析。如果您是從String開始,你可以創建一個InputSource這樣的:

new InputSource(new StringReader(xmlInString)) 

如果您在 Freemarker模板語言(FTL)是,和你有一個XML字符串進行解析時,您將需要把解析器作爲工具放入您的模型中。在你的Java模型的設置,你會是這樣的:

model.put("parseXML", new XMLParserModel()); 

XMLParserModel是,你寫一個擴展TemplateModelEx類。您將執行一個exec方法,該方法需要String(它將需要一個列表,但您將獲取第一個條目)並返回TemplateNodeModel與您的解析結果。在FTL中,它看起來像這樣:

<#assign myXMLNode = parseXML(xmlString)> 
+0

需要模板本身的Xml節點。它不是從Java源傳遞的。 –

+0

所以你有一個'String'包含XML,你需要把它變成一個FTL中的XML節點?使用第二種方法。 –

+0

是XMLParserModel需要擴展的'TemplateModelException'類嗎? –