1

客观的

我正在尝试将wso2 企业集成器中的 xml 转换为 csv 。我有一个简单的代理服务,我在其中使用 smooks 调解器

以下是我的 smooks 配置:

    <?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="default.serialization.on">false</param>
    <param name="input.xml" type="input.type.actived">Workspace://SmookesREG/input.xml</param>
  </params>
  <resource-config selector="#document">
    <resource>org.milyn.delivery.DomModelCreator</resource>
  </resource-config>
  <ftl:freemarker applyOnElement="#document">
    <ftl:template>   
  <![CDATA["ID";"PID";"Naam";"Titel";"Achternaam";"Voorletters";"Voornaam";"Tussenvoegsels";"Geboortedatum";"Geboortenaam";"Geboorteachternaam";"Geboortetussenvoegsels";"Geboorteland";"Geslacht";"Ident";"Straat";"Huisnummer";"Toevoeging";"Postcode";"Woonplaats";"Land";"BSN";"Mobieltelefoonnummer";"E-mailadres";"Organisatie-ID";"Startdatum";"Einddatum";"Onderwerp";"Beschikkingsnummer";"Kiesproductcategorieofzzp";"nbsp";"Extragegevensproductcategorie";"Productcode";"Volume";"Eenheid";"Eenheid";"Frequentie";"zzp-code";"zzpklasse";"leveringsvorm";"Extragegevensbeschikkingtoewijzing";"Gemeentecode";"Indicatieorgaancode";"Clientnummer";"Geheimeclient";"Geboortedatumgebruik";"Aanvraagnummerbeschikking";"AanbiederAGB-code";"Toewijzingsdatumtijd";"Redenwijziging";"Opmerkingen";"Aanvangsdatumzorg";"Einddatumzorg";"Redenbeeindiging";"Uitzonderenvanautomatischeaanleveringberichten";"Uitzonderenvanberichtenverkeer"
<#list .vars["csv-record"] as csv_record>
"${.vars["csv_record"]["ID"]}";"${.vars["csv_record"]["PID"]}";"${.vars["csv_record"]["Naam"]}";"${.vars["csv_record"]["Titel"]}";"${.vars["csv_record"]["Achternaam"]}";"${.vars["csv_record"]["Voorletters"]}";"${.vars["csv_record"]["Voornaam"]}";"${.vars["csv_record"]["Tussenvoegsels"]}";"${.vars["csv_record"]["Geboortedatum"]}";"${.vars["csv_record"]["Geboortenaam"]}";"${.vars["csv_record"]["Geboorteachternaam"]}";"${.vars["csv_record"]["Geboortetussenvoegsels"]}";"${.vars["csv_record"]["Geboorteland"]}";"${.vars["csv_record"]["Geslacht"]}";"${.vars["csv_record"]["Ident"]}";"${.vars["csv_record"]["Straat"]}";"${.vars["csv_record"]["Huisnummer"]}";"${.vars["csv_record"]["Toevoeging"]}";"${.vars["csv_record"]["Postcode"]}";"${.vars["csv_record"]["Woonplaats"]}";"${.vars["csv_record"]["Land"]}";"${.vars["csv_record"]["BSN"]}";"${.vars["csv_record"]["Mobieltelefoonnummer"]}";"${.vars["csv_record"]["Emailadres"]}";"${.vars["csv_record"]["OrganisatieID"]}";"${.vars["csv_record"]["Startdatum"]}";"${.vars["csv_record"]["Einddatum"]}";"${.vars["csv_record"]["Onderwerp"]}";"${.vars["csv_record"]["Beschikkingsnummer"]}";"${.vars["csv_record"]["Kiesproductcategorieofzzp"]}";;"${.vars["csv_record"]["nbddExtragegevensproductcategorie"]}";"${.vars["csv_record"]["Productcode"]}";"${.vars["csv_record"]["Volume"]}";;"${.vars["csv-record"]["Eenheid"]}";"${.vars["csv-record"]["Frequentie"]}";"${.vars["csv-record"]["zzpcode"]}";"${.vars["csv-record"]["zzpklasse"]}";"${.vars["csv-record"]["zzpleveringsvorm"]}";"${.vars["csv-record"]["Extragegevensbeschikkingtoewijzing"]}";"${.vars["csv-record"]["Gemeentecode"]}";"${.vars["csv-record"]["Indicatieorgaancode"]}";"${.vars["csv-record"]["Clientnummer"]}";"${.vars["csv-record"]["Geheimeclient"]}";"${.vars["csv-record"]["Geboortedatumgebruik"]}";"${.vars["csv-record"]["Aanvraagnummerbeschikking"]}";"${.vars["csv-record"]["AanbiederAGBcode"]}";"${.vars["csv-record"]["Toewijzingsdatumtijd"]}";"${.vars["csv-record"]["Redenwijziging"]}";"${.vars["csv-record"]["Opmerkingen"]}";"${.vars["csv-record"]["Aanvangsdatumzorg"]}";"${.vars["csv-record"]["Einddatumzorg"]}";"${.vars["csv-record"]["Redenbeeindiging"]}";"${.vars["csv-record"]["Uitzonderenvanautomatischeaanleveringberichten"]}";"${.vars["csv-record"]["Uitzonderenanberichtenverkeer"]}"
</#list>]]></ftl:template>
    <param name="quote">"</param>
    <param name="includeFieldNames">true</param>
    <param name="csvFields">ID,PID,Naam,Titel,Achternaam,Voorletters,Voornaam,Tussenvoegsels,Geboortedatum,Geboortenaam,Geboorteachternaam,Geboortetussenvoegsels,Geboorteland,Geslacht,Ident,Straat,Huisnummer,Toevoeging,Postcode,Woonplaats,Land,BSN,Mobieltelefoonnummer,E-mailadres,Organisatie-ID,Startdatum,Einddatum,Onderwerp,Beschikkingsnummer,Kiesproductcategorieofzzp,nbsp,Extragegevensproductcategorie,Productcode,Volume,Eenheid,Eenheid,Frequentie,zzp-code,zzpklasse,leveringsvorm,Extragegevensbeschikkingtoewijzing,Gemeentecode,Indicatieorgaancode,Clientnummer,Geheimeclient,Geboortedatumgebruik,Aanvraagnummerbeschikking,AanbiederAGB-code,Toewijzingsdatumtijd,Redenwijziging,Opmerkingen,Aanvangsdatumzorg,Einddatumzorg,Redenbeeindiging,Uitzonderenvanautomatischeaanleveringberichten,Uitzonderenvanberichtenverkeer</param>
    <param name="seperator">;</param>
    <param name="messageType">CSV</param>
    <param name="templateDataProvider">input</param>
  </ftl:freemarker>
</smooks-resource-list>

代理服务:

<?xml version="1.0" encoding="UTF-8"?>

<proxy name="sample" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <log level="full" separator="========--------Before sample Smooks configuration--------========="/>
            <smooks config-key="gov:smook/smookesdiscarded.xml" description="TransformToCSV">
                <input type="xml"/>
                <output type="text"/>
            </smooks>
            <log level="full" separator="========--------After sample  Smooks configuration--------========="/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </target>
</proxy>

问题陈述:

当我将请求 A发送到我的服务时,我的代理和 smooks 运行并成功运行,但是当我运行请求 B时,我得到了错误。

两个请求的唯一区别是 csv-record 标签之前的肥皂信封头标签。

这是我的请求

   <csv-record number="1">
     <ID>2526844</ID>
     <PID>181996</PID>
     <Naam>Esfandiari H, 181996 (Hamid)</Naam>
     <Titel>de heer</Titel>
     <Achternaam>Esfandiari</Achternaam>
     <Voorletters>H</Voorletters>
     <Voornaam>Hamid</Voornaam>
     <Tussenvoegsels />
     <Geboortedatum>7-8-1961</Geboortedatum>
     <Geboortenaam>H, 181996 (Hamid)</Geboortenaam>
     <Geboorteachternaam />
     <Geboortetussenvoegsels />
     <Geboorteland />
     <Geslacht>man</Geslacht>
     <Ident>NI Zoetermeer</Ident>
     <Straat>Fregatwerf</Straat>
     <Huisnummer>247</Huisnummer>
     <Toevoeging />
     <Postcode>2725 CV</Postcode>
     <Woonplaats>Zoetermeer</Woonplaats>
     <Land>Nederland</Land>
     <BSN>205426633</BSN>
     <Mobieltelefoonnummer>06-26033515</Mobieltelefoonnummer>
     <Emailadres>amirhamid61@gmail.com</Emailadres>
     <OrganisatieID>15242</OrganisatieID>
     <Startdatum>2-6-2017</Startdatum>
     <Einddatum>1-6-2019</Einddatum>
     <Onderwerp>WMO-beschikking</Onderwerp>
     <Beschikkingsnummer>10046781</Beschikkingsnummer>
     <Kiesproductcategorieofzzp>Begeleiding 02</Kiesproductcategorieofzzp>
     <nbddExtragegevensproductcategorie />
     <Productcode />
     <Volume />
     <Eenheid2015 />
     <Eenheid />
     <Frequentie />
     <zzpcode />
     <zzpklasse />
     <zzpleveringsvorm />
     <Extragegevensbeschikkingtoewijzing />
     <Gemeentecode />
     <Indicatieorgaancode />
     <Clientnummer />
     <Geheimeclient />
     <Geboortedatumgebruik />
     <Aanvraagnummerbeschikking />
     <AanbiederAGBcode />
     <Toewijzingsdatumtijd />
     <Redenwijziging />
     <Opmerkingen />
     <Aanvangsdatumzorg />
     <Einddatumzorg />
     <Redenbeeindiging />
     <Uitzonderenvanautomatischeaanleveringberichten />
     <Uitzonderenanberichtenverkeer />
  </csv-record>

这是我的请求 B

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <csv-record number="1">
         <ID>2526844</ID>
         <PID>181996</PID>
         <Naam>Esfandiari H, 181996 (Hamid)</Naam>
         <Titel>de heer</Titel>
         <Achternaam>Esfandiari</Achternaam>
         <Voorletters>H</Voorletters>
         <Voornaam>Hamid</Voornaam>
         <Tussenvoegsels />
         <Geboortedatum>7-8-1961</Geboortedatum>
         <Geboortenaam>H, 181996 (Hamid)</Geboortenaam>
         <Geboorteachternaam />
         <Geboortetussenvoegsels />
         <Geboorteland />
         <Geslacht>man</Geslacht>
         <Ident>NI Zoetermeer</Ident>
         <Straat>Fregatwerf</Straat>
         <Huisnummer>247</Huisnummer>
         <Toevoeging />
         <Postcode>2725 CV</Postcode>
         <Woonplaats>Zoetermeer</Woonplaats>
         <Land>Nederland</Land>
         <BSN>205426633</BSN>
         <Mobieltelefoonnummer>06-26033515</Mobieltelefoonnummer>
         <Emailadres>amirhamid61@gmail.com</Emailadres>
         <OrganisatieID>15242</OrganisatieID>
         <Startdatum>2-6-2017</Startdatum>
         <Einddatum>1-6-2019</Einddatum>
         <Onderwerp>WMO-beschikking</Onderwerp>
         <Beschikkingsnummer>10046781</Beschikkingsnummer>
         <Kiesproductcategorieofzzp>Begeleiding 02</Kiesproductcategorieofzzp>
         <nbddExtragegevensproductcategorie />
         <Productcode />
         <Volume />
         <Eenheid2015 />
         <Eenheid />
         <Frequentie />
         <zzpcode />
         <zzpklasse />
         <zzpleveringsvorm />
         <Extragegevensbeschikkingtoewijzing />
         <Gemeentecode />
         <Indicatieorgaancode />
         <Clientnummer />
         <Geheimeclient />
         <Geboortedatumgebruik />
         <Aanvraagnummerbeschikking />
         <AanbiederAGBcode />
         <Toewijzingsdatumtijd />
         <Redenwijziging />
         <Opmerkingen />
         <Aanvangsdatumzorg />
         <Einddatumzorg />
         <Redenbeeindiging />
         <Uitzonderenvanautomatischeaanleveringberichten />
         <Uitzonderenanberichtenverkeer />
      </csv-record>
   </soapenv:Body>
</soapenv:Envelope>

现在我想运行请求 B,但我无法处理它。当我取下肥皂信封时,它工作得很好。如何从传入的 xml 请求中删除肥皂信封严重卡住。非常感谢您的帮助。

4

1 回答 1

1

我已经通过使用丰富的调解器解决了这个问题,并添加了有效负载工厂来删除肥皂头,然后使用丰富的调解器获取我的原始请求。

于 2018-02-19T05:06:47.747 回答