0

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>
4

0 に答える 0