【问题标题】:Deleting a node from XML using Freemarker template使用 Freemarker 模板从 XML 中删除节点
【发布时间】:2014-09-05 00:02:38
【问题描述】:

如何使用 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>

【问题讨论】:

  • 你确定 freemarker 是正确的工具吗? :)
  • 我一直在使用 XSLT,想知道 Freemarker 是否会内置一些东西。

标签: freemarker


【解决方案1】:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多