Коллеги, добрый день!
Настроил XMLAnonymizerBean для SOAP канала-отправителя.
Вот пример из хелпа:
The anonymizer.acceptNamespaces parameter has the following value:
urn:sap-com:document:sap:rfc:functions rfc urn:sap-com:document:sap:soap:functions:mc-style rfc
Payload before using the XMLAnonymizerBean:
Code:
<Z_PAYMITEM_GET_LIST
xmlns="urn:sap-com:document:sap:rfc:functions"
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<I_ACCOUNTIDENT xmlns="">
<ACCOUNT_NUMBER>0080000094</ACCOUNT_NUMBER>
<BANK_COUNTRY>DE</BANK_COUNTRY>
<BANK_COUNTRY_ISO>DE</BANK_COUNTRY_ISO>
</I_ACCOUNTIDENT>
</Z_PAYMITEM_GET_LIST>
Payload after using the XMLAnonymizerBean:
Code:
<?xml version='1.0' encoding='utf-8'?>
<rfc:Z_PAYMITEM_GET_LIST
xmlns:rfc='urn:sap-com:document:sap:rfc:functions'>
<I_ACCOUNTIDENT>
<ACCOUNT_NUMBER>0080000094</ACCOUNT_NUMBER>
<BANK_COUNTRY>DE</BANK_COUNTRY>
<BANK_COUNTRY_ISO>DE</BANK_COUNTRY_ISO>
</I_ACCOUNTIDENT>
</rfc:Z_PAYMITEM_GET_LIST>
У меня ситуация в принципе похожая:
Исходное сообщение:
Code:
<MT_Test_Docs_List xmlns="urn:scenario_sync_async_1c" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Document BE="2000">
<DocNumber>Doc1_Num</DocNumber>
<DocDate>20140414</DocDate>
<Item>
<ItemID>Item_1</ItemID>
<ItemText>Text_1</ItemText>
</Item>
<Item>
<ItemID>Item_2</ItemID>
<ItemText>Text_2</ItemText>
</Item>
</Document>
<Document BE="9000">
<DocNumber>Doc2_Num</DocNumber>
<DocDate>20140322</DocDate>
<Item>
<ItemID>Item_3</ItemID>
<ItemText>Text_3</ItemText>
</Item>
<Item>
<ItemID>Item_4</ItemID>
<ItemText>Text_4</ItemText>
</Item>
</Document>
</MT_Test_Docs_List>
Однако, после вызова модуля получаю:
Code:
<?xml version='1.0' encoding='utf-8'?>
<ns0:MT_Test_Docs_List xmlns:ns0='urn:scenario_sync_async_1c'>
<ns0:Document BE='2000'>
<ns0:DocNumber>Doc1_Num</ns0:DocNumber>
<ns0:DocDate>20140414</ns0:DocDate>
<ns0:Item>
<ns0:ItemID>Item_1</ns0:ItemID>
<ns0:ItemText>Text_1</ns0:ItemText>
</ns0:Item>
<ns0:Item>
<ns0:ItemID>Item_2</ns0:ItemID>
<ns0:ItemText>Text_2</ns0:ItemText>
</ns0:Item>
</ns0:Document>
<ns0:Document BE='9000'>
<ns0:DocNumber>Doc2_Num</ns0:DocNumber>
<ns0:DocDate>20140322</ns0:DocDate>
<ns0:Item>
<ns0:ItemID>Item_3</ns0:ItemID>
<ns0:ItemText>Text_3</ns0:ItemText>
</ns0:Item>
<ns0:Item>
<ns0:ItemID>Item_4</ns0:ItemID>
<ns0:ItemText>Text_4</ns0:ItemText>
</ns0:Item>
</ns0:Document>
</ns0:MT_Test_Docs_List>
В параметрах модуля стоит:
anonymizer.acceptNamespaces - urn:scenario_sync_async_1c ns0
Но почему-то в моем случае помечаются префиксами все узлы, а не только корневой, как в примере. После этого, естественно, слетают мэппинг и, как дополнительный бонус, receiver determination, так как там условие стоит на наличие узла 'Document', а по факту имеется 'ns0:Document'.
Не подскажете, в какую сторону посмотреть?