目标
我正在尝试将 wso2企业集成商中的xml转换为csv。我有一个简单的代理服务,我使用smooks mediator
以下是我的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标记之前的soap envelope标记。
这是我的请求A
<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请求中删除soap信封 非常困难。非常感谢帮助。
答案 0 :(得分:1)
我已经通过使用rich mediator解决了它,并添加了有效负载工厂以删除soap标头,然后使用rich mediator获取我的原始请求。