"Dustin D. Trammell" <[EMAIL PROTECTED]> writes: > Hello, > > First let me say that I am somewhat new to XML, and very new to libxml2. > I tried searching this list's archives for previous discussion on what I > am trying to do and also perused the reference section of functions on > the xmlsoft.org reference area for functions that looked appropriate but > so far have not found what I am looking for. Also, please advise if > this is not the appropriate place for this type of development question. > Any pointers in the right direction would be most appreciated. > > What I am trying to do is have my application read in two XML trees. > I'm doing this with the get_xml_doc_ptr() function. The two XML trees > have some common elements and some uncommon elements between them. Many > of the common elements have some common attributes and some uncommon > attributes between the matching elements. I want to merge these two > trees into either a third, new tree or update one of the existing trees > so that colliding elements, attributes, and values are preserved from > one of the trees and all uncommon elements between the two trees will be > available in the resultant tree. For example: > > Tree A: > <myelement attribute="yes!"> > <subelement1/> > <subelement3/ threeattribute1="yes!"/> > </myelement> > > Tree B: > <myelement attribute="no!"> > <subelement1 oneattribute="yes!"/> > <subelement2 twoattribute="yes!"/> > <subelement3 threeattribute2="yes!"/> > </myelement> > > Merging the two, and preserving values from Tree A, the resultant tree > would look like the following. Note the preservation of Tree A's > colliding "attribute" attribute of the "myelement" element and the > aggregation of all the subelements and subelement attributes in the > subelement section: > > <myelement attribute="yes!"> > <sublement1 oneattribute="yes!"/> > <subelement2 twoattribute="yes!"/> > <subelement3 threeattribute1="yes!" threeattribute2="yes!"/> > </myelement> > > Does libxml2 provide any functions that already do this or some similar > tree merger? It would actually be more beneficial to merge elements > individually, not the entire tree. For example, consider the > "myelement" elements above to not be the root nodes of the tree and both > be somewhere deep within two other mostly unrelated XML documents. > Seeking to both of them with something like XPath and then creating a > new XML document out of just those element sections is really what I'm > trying to accomplish. > > So far, from looking at the xmlsoft.org reference area's function lists > it appears I may have to code up this functionality manually, building a > third tree from scratch (not hard, I already found the tutorial on that > one...) and then stepping through the two (or more) source trees element > by element, attribute by attribute and cross checking them all manually > before deciding what to add to the resultant third tree. That seems > fairly messy, and I'd rather not do that if the capability is already > within libxml2 to do the bulk of the work itself. > > Thanks in advance for any advice or pointers in the right direction any > of you may be able to provide...
I'd use xslt for this. It would be a lot easier to express. Nic Ferrier _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
