wso2 esb 文件处理示例 smooks csv 解析器第一行包含有效负载命名空间

2023-12-24

涉足 WSO2 ESB 示例http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processing http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processing但遇到一个问题,当一个简单的 csv 文件

name0,value0
name1,value1
name2,value2
name3,value3

smooks 使用此配置解析

<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.1.xsd">
<csv:reader fields="name,value" />
</smooks-resource-list>

大部分结果是正确的输出,但第一行包含不正确的有效负载名称空间

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <text xmlns="http://ws.apache.org/commons/ns/payload">name0,value0
name1,value1
name2,value2
name3,value3</text>
</soapenv:Body>
</soapenv:Envelope>

因此,当读取第一个 name0 值时,它包含 ,这也是不正确的。

然后 Smooks 将其转换为

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <csv-set>
        <csv-record number="1">
            <name>&lt;?xml version='1.0' encoding='utf-8'?>&lt;text xmlns="http://ws.apache.org/commons/ns/payload">name0</name>
            <value>value0</value>
        </csv-record>
        <csv-record number="2">
            <name>name1</name>
            <value>value1</value>
        </csv-record>
        <csv-record number="3">
            <name>name2</name>
            <value>value2</value>
        </csv-record>
        <csv-record number="4">
            <name>name3</name>
            <value>value3&lt;/text></value>
        </csv-record>
    </csv-set>
</soapenv:Body>
</soapenv:Envelope>

那么,Smooks 是否会执行所有要求的操作,因为输入中包含最后的 the ?但是,它理解的元素数量计为 4,因此 csv 不应该有标题行。我可以通过包含标题行来解决(在某种程度上),但元素计数不正确。我可以通过在 csv 的最后一行包含回车符来解决结尾关闭问题。

我该如何解决这个问题?一年前我发现另一个帖子问了同样的问题,但没有答案。


我现在已经解决了这个问题。在我的smooks标签中

<smooks xmlns="http://ws.apache.org/ns/synapse" config-key="conf:/smooks-config.xml">
   <input type="text"/>
   <output type="xml"/>
</smooks>

我将第一个输入元素设置为 xml。更改为文本解决了该问题。 (在 WSO2 的 GUI 编辑器中,它默认具有这些元素,而本教程根本没有这些元素)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wso2 esb 文件处理示例 smooks csv 解析器第一行包含有效负载命名空间 的相关文章

随机推荐