我之前的问题在这里得到了解答
但是我的 xml 带有名称空间,但是当我尝试在模板中添加名称空间时,它不会解析我的 xml 数据。下面是我修改后的模板和示例 xml 以及预期输出。
<#ftl ns_prefixes={"D": "http://www.test.org/"}>
<#assign DEALS = body[".//D:MESSAGE/.//D:DEALS[following-
sibling::D:DOCUMENT_SETS]/.//D:DEAL"]>
{
loans:[
<#list DEALS as d>
{
${d["name(./*)"]} : ${d[".//D:AddressLineText"]}
}
</#list>
]
}
示例 Xml
<MESSAGE >
<DEALS>
<DEAL>
<AddressLineText>Addr1</AddressLineText>
</DEAL>
<DEAL>
<AddressLineText>Addr2</AddressLineText>
</DEAL>
</DEALS>
<DOCUMENT_SETS>
<DEALS>
<DEAL>
<LateChargeAmount>110</LateChargeAmount>
</DEAL>
</DEALS>
</DOCUMENT_SETS>
</MESSAGE>
预期产量
{
"loans": [
{
AddressLineText : Addr1
},
{
AddressLineText : Addr2
}
]
}
您显示的 XML 中的元素不属于
http://www.test.org/
命名空间。它们不属于任何名称空间。因此,只需从查询中删除所有 D:
和 ns_prefixes={"D": "http://www.test.org/"}
,然后就可以了。