使用Freemarker模板从XML中删除节点

时间:2014-09-05 00:02:39

标签: freemarker

如何使用Freemarker模板从XML中删除节点?

输入:

<ns:Response>
  <ns:MessageBody>
    <Header title="This title node needs to be removed."/>
    <ns:Items>
      <ns:Item>
        <ns:ItemId>1</ns:ItemId>
      </Item>
    </ns:Items>
  </ns:MessageBody>
</ns:Response>

输出:

<ns:Response>
  <ns:MessageBody>
    <ns:Items>
      <ns:Item>
        <ns:ItemId>1</ns:ItemId>
      </Item>
    </ns:Items>
  </ns:MessageBody>
</ns:Response>

1 个答案:

答案 0 :(得分:0)

FreeMarker的XML支持就是在您的模板上下文中有一些XML(也可能是非XML)的情况下,并且您希望从中提取一些信息并在生成的HTML报告中显示或不管你做什么。为了将XML转换为类似的XML,嗯......它可能不太合适。无论如何,假设doc是W3C DOM Document

<#ftl ns_prefixes={'D': 'foo'}>

<#visit doc />

<#macro @text>${.node?xml}</#macro>

<#macro @element>
  <#if .node?node_name != 'Header'>
    ${.node.@@start_tag}<#recurse>${.node.@@end_tag}<#t>
  </#if>
</#macro>