将Mediator XML转换为CSV,两个标签中的相同重复元素不起作用。穿衣指南

时间:2018-07-15 17:25:36

标签: wso2 wso2esb freemarker wso2ei smooks

尊敬的先生,

我必须使用smooks介体将大型xml转换为csv格式。但是会出错。请指导。 在这里,我在两个标签library和library1中都有书籍结构(模型)。

下面是数据较少的示例示例:

我的输入是:

<?xml version="1.0"?>
<catalog>
    <library>
        <book id="bk101">
            <name>a</name>
            <title>b</title>      
        </book>
        <book id="bk102">
            <name>c</name>
            <title>d</title>
        </book>
    </library>  
    <library1>
        <book id="bk103">
            <author>e</author>
            <title>f</title>      
        </book>
        <book id="bk104">
            <author>g</author>
            <title>h</title>      
        </book> 
    </library1>
</catalog>

SmooksConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
    xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
    <params>
        <param name="stream.filter.type">SAX</param>
        <!-- <param name="inputType">input.xml</param>
         <param name="input.xml" type="input.type.actived">File:/C:\Work\2016\09_ESB_Auto_Mail_rpts\TestFiles\TestFileXMLCSVMap.xml
        </param>  -->
        <param name="default.serialization.on">true</param>
    </params>
    <resource-config selector="book">
        <resource>org.milyn.delivery.DomModelCreator</resource>
    </resource-config>

    <ftl:freemarker applyOnElement="library">
        <ftl:template>
            <!--author;title
<?TEMPLATE-SPLIT-PI?> 
                            -->
        </ftl:template>
    </ftl:freemarker>

    <ftl:freemarker applyOnElement="book">
        <ftl:template>      
            <!--${book.name},${book.title}
            -->
        </ftl:template>

    </ftl:freemarker>
    <ftl:freemarker applyOnElement="library1">
        <ftl:template>
            <!--<#ftl >
<?TEMPLATE-SPLIT-PI?> 
                            -->
        </ftl:template>
    </ftl:freemarker>

    <ftl:freemarker applyOnElement="book">
        <ftl:template>      
            <!--<#ftl >${book.author},${book.title}
            -->
        </ftl:template>

    </ftl:freemarker>
</smooks-resource-list>

所需的输出:

author;title
a,b
c,d
e,f
g,h 

实际异常:

018-07-15 21:59:03,584] [EI-Core]错误-SmooksMediator无法过滤源。 org.milyn.SmooksException:无法过滤源。     在org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97)

由以下原因引起:org.milyn.delivery.sax.SAXWriterAccessException:SAX访问者“ org.milyn.templating.freemarker.FreeMarkerTemplateProcessor”对元素“ book”的非法访问。 SAX访问者“ org.milyn.templating.freemarker.FreeMarkerTemplateProcessor”已获得作家。请参见SAXElement javadocs(http://milyn.codehaus.org/Smooks)。更改Smooks访问者资源配置。     在org.milyn.delivery.sax.SAXHandler $ WriterManagedSAXElement.throwSAXWriterAccessException(SAXHandler.java:632)     在org.milyn.delivery.sax.SAXHandler $ WriterManagedSAXElement.getWriter(SAXHandler.java:597)

... 19 more

[2018-07-15 21:59:03,589] [EI-Core]错误-SequenceMediator无法过滤源。造成原因过滤源失败。 org.wso2.carbon.mediator.service.MediatorException:无法过滤源。造成原因过滤源失败。     在org.wso2.carbon.mediator.transform.SmooksMediator.handleException(SmooksMediator.java:265)

实际输出:未生成文件。

谨此问候, 阿迪亚(Aditya)

0 个答案:

没有答案