Merge 2 XMLs based on their attribute value using C# or XSLT


first xml is:

<study stdyname="jyia">   <subject sbjid="001">    <visit visitid="a">     <itemgroup oid="a1" name="gulzar" age="23" />     <itemgroup oid="a2" name="tej" age="32" />        </visit>     <visit visitid="b">      <itemgroup oid="b1" name="ahmed" age="22" />      <itemgroup oid="b2" name="praks" age="42" />         </visit>   </subject>   <subject sbjid="002">    <visit visitid="c">     <itemgroup oid="c1" name="gul" age="13" />     <itemgroup oid="c2" name="te" age="12" />        </visit>    </subject>  </study>


second xml is:

<study stdyname="jyia">   <subject sbjid="001">      <visit visitid="b">      <itemgroup oid="bb1" name="ahme" age="2" />      <itemgroup oid="bb2" name="prak" age="2" />         </visit>   </subject>   <subject sbjid="003">    <visit visitid="d">     <itemgroup oid="d1" name="gull" age="113" />     <itemgroup oid="d2" name="tejj" age="112" />       </visit>    </subject>  </study>

output be:

<study stdyname="jyia">   <subject sbjid="001">    <visit visitid="a">     <itemgroup oid="a1" name="gulzar" age="23" />     <itemgroup oid="a2" name="tej" age="32" />      </visit>    <visit visitid="b">     <itemgroup oid="b1" name="ahmed" age="22" />     <itemgroup oid="b2" name="praks" age="42" />       <itemgroup oid="bb1" name="ahme" age="2" />     <itemgroup oid="bb2" name="prak" age="2" />       </visit>   </subject>   <subject sbjid="002">    <visit visitid="c">     <itemgroup oid="c1" name="gul" age="13" />     <itemgroup oid="c2" name="te" age="12" />       </visit>   </subject>   <subject sbjid="003">    <visit visitid="d">     <itemgroup oid="d1" name="gull" age="113" />     <itemgroup oid="d2" name="tejj" age="112" />       </visit>   </subject>  </study>

i want merge above 2 xmls output shown in output code. please me out..i new c# code, if possible please provide whole code that. plesae guide me if there way round (using xslt)to that.here merging done attribute value.

thanks in advance, appreciated.

try this:

      xmldocument doca = new xmldocument();       doca.load(@"c:\xml\data1.xml");       xmldocument docb = new xmldocument();       docb.load(@"c:\xml\data2.xml");       foreach (xmlnode subjectb in docb.documentelement.childnodes) {         xmlnode subjecta = doca.selectsinglenode("//subject[@sbjid='" + subjectb.attributes["sbjid"].value + "']");         if (subjecta == null) {           xmlnode importedsubject = doca.importnode(subjectb, true);           doca.documentelement.appendchild(importedsubject);         }         else {           xmlnode visitb = subjectb.firstchild;           xmlnode visita = subjecta.selectsinglenode("visit[@visitid='" + visitb.attributes["visitid"].value + "']");           if (visita == null) {             xmlnode importedvisit = doca.importnode(visitb, true);             subjecta.appendchild(importedvisit);           }           else {             foreach (xmlnode itemgroupb in visitb.childnodes) {               xmlnode importeditemgroup = doca.importnode(itemgroupb, true);               visita.appendchild(importeditemgroup);             }           }         }       }       doca.save(@"c:\xml\merged.xml");



Visual Studio Languages  ,  .NET Framework  >  Visual C#



Comments

Popular posts from this blog

Azure DocumentDB Owner resource does not exist

BizTalk Server 2013 Azure VM Log Shipping and HA for hosts

How to Share webservice object to all user