Hi,
I have a general XML/DOM question that I've been grappling with all
night
tonight. It's probably not Xerces specific, so just tell me to take a hike
if that's the case. But I'm not sure where else to go...
I have several XML documents with the following structure:
<Projects>
<Project id="<some unique number>">
(more nodes here)
</Project>
</Projects>
My goal is to "merge" all of these documents such that the structure
becomes:
<Projects>
<Project id="<some number>">
...
</Project>
<Project id="<some number>">
...
</Project>
...
</Projects>
In other words, I want all of the "Project" structures to be children of the
"Projects" element.
So I created a new XmlDocument, created a "Projects" element and appended it
to the new document. Now I thought I'd be able to open each file, grab the
"Project" node, and append it to my "Projects" node. Apparently I was
wrong. My friendly JRE informs me that:
com.sun.xml.tree.DomEx: That node doesn't belong in this document.
Not quite sure what exactly that error means. I tried to grab the entire
document this time and append it to my new XmlDocument. Still no luck. I'm
really stuck as to how I go about "cutting & pasting" the Project node from
one XML document, and appending it to another tree.
My guts tell me I need to use a DocumentFragment, thus preserving all of the
children of the Project nodes. But the only method I see in the DOM spec
which uses a DocumentFragment is for the XmlDocument class
(createDocumentFragment). However, that method only creates an empty
DocumentFragment. I'm terrified that I might have to create an empty
DocumentFragment and somehow recursively add all of the children nodes, AND
THEN append the whole DocumentFragment to my XmlDocument.
So here I am. Confused (what does that error message really mean?), weary
(I've tried almost everything I can think of, and seen that error so many
times I just may cry myself to sleep tonight), and scared (that I may have
to write the recursive routine to build the docfrag).
I guess I just want someone to point me in the right direction. Am I
correct in my docfrag thoughts? Or is there a better/simpler way to
accomplish this task? I have to imagine this is a rather common task in
XML, so there has to be a simple way to do it.
Thanks so much for any help you guys can provide! In the immortal words of
our favorite princess: "Help me Xerces-dev. You're my only hope!"
-Tim