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... -- Dustin D. Trammell VoIP Security Research TippingPoint, a division of 3Com
Attachment:
signature.asc
Description: This is a digitally signed message part