2 つの顧客ノード (現在および更新済み) を含む XML ドキュメントがあります。トラバースして結果の XML ドキュメントを生成し、顧客とそのさまざまな要素 (住所、連絡先、アカウントなど) を、フィールドおよび親レベルのステータスと共にマージできるようにしたいと考えています。ソリューションは、n 個の子要素を持つ可能性のある n 個の子要素を通過できる必要があります。入力 XML の形式は自由に変更できます。役立つ場合は、Ids 属性を作成できます。
入力:
<Customer Id="Current">
<CustId>1</CustId>
<CustName>Acme</CustName>
<Addresses>
<Address>
<AddressId>1</AddressId>
<Street>111 Main</Street>
</Address>
<Address>
<AddressId>2</AddressId>
<Street>222 Main</Street>
</Address>
<Contacts>
<Contact>
<ContactId>1</ContactId>
<ContactName>Tom</ContactName>
<ContactPhone>555-1212</ContactPhone>
</Contact>
</Contacts>
</Customer>
<Customer Id="Updated">
<CustId>1</CustId>
<CustName>Acme</CustName>
<Addresses>
<Address>
<AddressId>1</AddressId>
<Street>111 Main</Street>
</Address>
<Address>
<AddressId>3</AddressId>
<Street>333 Main</Street>
</Address>
<Contacts>
<Contact>
<ContactId>1</ContactId>
<ContactName>Tom</ContactName>
<ContactPhone>555-1212</ContactPhone>
</Contact>
</Contacts>
</Customer>
出力:
<Customer Id="Updated" status="Changed">
<CustId>1</CustId>
<CustName>Acme</CustName>
<CustRegion status="New"/>
<Addresses status="Changed">
<Address>
<AddressId>1</AddressId>
<Street>111 Main</Street>
</Address>
<Address Status="Deleted">
<AddressId>2</AddressId>
<Street>222 Main</Street>
</Address>
<Address Status="New">
<AddressId status="New">3</AddressId>
<Street status="New">222 Main</Street>
</Address>
<Contacts status="Changed">
<Contact status="Changed">
<ContactId>1</ContactId>
<ContactName>Tom</ContactName>
<ContactPhone tatus="New">555-1212</ContactPhone>
</Contact status="New">
</Contacts>
</Customer>