这是在Freemarker中创建Xml节点的方法吗?
<field type="select" value="country" name="country" >
是否可以通过此Xml元素创建field
节点?我在freemarker文档中的任何地方都找不到它。
答案 0 :(得分: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)>
答案 1 :(得分:0)
另一种选择是使用 jstl xml 标签库。
<#assign x=JspTaglibs['http://java.sun.com/jsp/jstl/xml']/>
<#assign xmlString = '<doc>text</doc>'/>
<@x.parse var="xmlDoc" doc=xmlString/>
<#-- now process variable 'xmlDoc' using jsp or freemarker -->