289.9. IDoc の XML シリアル化
概要
IDoc メッセージ本文は、組み込み型コンバーターを使用して、XML 文字列形式にシリアル化できます。
XML 名前空間
シリアル化された各 IDoc は、次の一般的な形式を持つ XML 名前空間に関連付けられています。
http://sap.fusesource.org/idoc/repositoryName/idocType/idocTypeExtension/systemRelease/applicationRelease
repositoryName (リモート SAP メタデータリポジトリーの名前) と idocType (IDoc ドキュメントタイプ) の両方が必須ですが、名前空間の他のコンポーネントは空白のままにすることができます。たとえば、次のような XML 名前空間を持つことができます。
http://sap.fusesource.org/idoc/MY_REPO/FLCUSTOMER_CREATEFROMDATA01///
組み込み型コンバーター
Camel SAP コンポーネントには組み込み型コンバーターがあり、Document
オブジェクトまたは DocumentList
オブジェクトを String 型に変換したり、String
型から変換したりできます。
たとえば、Document
オブジェクトを XML 文字列にシリアル化するには、次の行を XML DSL のルートに追加するだけです。
<convertBodyTo type="java.lang.String"/>
このアプローチを使用して、シリアライズされた XML メッセージを Document
オブジェクトにすることもできます。たとえば、現在のメッセージ本文がシリアル化された XML 文字列である場合、XML DSL のルートに次の行を追加することで、それを Document
オブジェクトに戻すことができます。
<convertBodyTo type="org.fusesource.camel.component.sap.model.idoc.Document"/>
XML 形式のサンプル IDoc メッセージ本文
IDoc メッセージを String
に変換すると、ルート要素が idoc:Document
(単一のドキュメントの場合) または idoc:DocumentList
(ドキュメントのリストの場合) のいずれかである XML ドキュメントにシリアライズされます。例289.2「XML の IDoc メッセージボディー」 は、idoc:Document
要素にシリアル化された単一の IDoc ドキュメントを示しています。
例289.2 XML の IDoc メッセージボディー
<?xml version="1.0" encoding="ASCII"?> <idoc:Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:FLCUSTOMER_CREATEFROMDATA01---="http://sap.fusesource.org/idoc/XXX/FLCUSTOMER_CREATEFROMDATA01///" xmlns:idoc="http://sap.fusesource.org/idoc" creationDate="2015-01-28T12:39:13.980-0500" creationTime="2015-01-28T12:39:13.980-0500" iDocType="FLCUSTOMER_CREATEFROMDATA01" iDocTypeExtension="" messageType="FLCUSTOMER_CREATEFROMDATA" recipientPartnerNumber="QUICKCLNT" recipientPartnerType="LS" senderPartnerNumber="QUICKSTART" senderPartnerType="LS"> <rootSegment xsi:type="FLCUSTOMER_CREATEFROMDATA01---:ROOT" document="/"> <segmentChildren parent="//@rootSegment"> <E1SCU_CRE parent="//@rootSegment" document="/"> <segmentChildren parent="//@rootSegment/@segmentChildren/@E1SCU_CRE.0"> <E1BPSCUNEW parent="//@rootSegment/@segmentChildren/@E1SCU_CRE.0" document="/" CUSTNAME="Fred Flintstone" FORM="Mr." STREET="123 Rubble Lane" POSTCODE="01234" CITY="Bedrock" COUNTR="US" PHONE="800-555-1212" EMAIL="fred@bedrock.com" CUSTTYPE="P" DISCOUNT="005" LANGU="E"/> </segmentChildren> </E1SCU_CRE> </segmentChildren> </rootSegment> </idoc:Document>