如何使用FreeMarker函数移除第三方接口返回数据中的XML标签?
解决FreeMarker中移除XML标签的方法
嘿,这个问题我熟!要在FreeMarker里移除这些XML标签,其实用正则配合内置的replace函数就能轻松搞定,不用额外引入其他工具。
直接使用replace函数
FreeMarker的replace函数支持正则匹配模式,我们可以用正则表达式匹配所有XML标签,然后替换为空字符串。具体写法如下:
<!-- 假设你的原始数据存在变量rawContent中 --> ${rawContent?replace("<[^>]+>", "", "r")}
- 正则表达式
<[^>]+>:会匹配任何以<开头、>结尾的XML/HTML标签,不管标签里的属性内容是什么,都能精准匹配。 - 第三个参数
"r":告诉FreeMarker这是正则模式匹配,否则只会做普通字符串替换。
用你的示例数据测试的话,替换后会得到纯文本:welcome to first program Example ...
自定义宏复用(如果需要多次使用)
如果你的模板里需要多次处理这类内容,可以封装成一个宏,方便复用:
<#macro stripXmlTags text> ${text?replace("<[^>]+>", "", "r")} </#macro> <!-- 使用宏的方式 --> <@stripXmlTags text=rawContent />
这样每次需要移除标签时,直接调用这个宏就可以了,代码更整洁。
注意事项
这个正则表达式能覆盖绝大多数标准XML标签的场景,但如果你的数据里存在不规范的标签(比如没有闭合的<或者>),可能需要调整正则,但从你给出的示例来看,这个写法完全够用。
内容的提问来源于stack exchange,提问作者Ghanshyam Mule
相关产品推荐
相关产品推荐

