如何在Freemarker中输出XML节点

时间:2015-07-23 18:36:17

标签: freemarker

我可能在这里滥用Freemarker,但我希望能够使用它从XML文档的外部剥离包装元素,例如:

<br:wrap xmlns:br="http://demo.tempuri.com/">
  <br:borrower>
     <br:id>111-11-1111</br:id>
     <br:ssn>111-11-1111</br:ssn>
     <br:city>Los Angeles</br:city>
     <br:first>John</br:first>
     <br:last>Smith</br:last>
     <br:phone>310-000-0000</br:phone>
     <br:state>CA</br:state>
     <br:zip>90025</br:zip>
  </br:borrower>
</br:wrap>

我想删除外部<wrap/>元素。使用以下方法选择内部文档很容易:

<#ftl ns_prefixes={"D":"http://demo.tempuri.com"}>
<#assign borrower = doc.wrap.borrower>
{ "result" : "${borrower}" }

这里的问题是第3行将导致旧的错误:

  

对于“$ {...}”内容:预期字符串或其他东西可自动转换为字符串(数字,日期或布尔值),但这已经评估为序列+哈希

如果我确切地知道这个内部文档的内容和结构是什么,我可以通过它来输出标量值,但是一直在变化。我甚至不知道所有内部元素的名称空间(这甚至可能是顶级内部对象的问题)。

我知道我可以使用XSLT轻松处理这种情况,但我更愿意在Freemarker中找到一个简单的解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

${borrower.@@markup}应该这样做。