Fusionnez deux fichiers XML en Java

J'ai deux fichiers XML de structure similaire qui je souhaite fusionner en un seul fichier.
Actuellement, je suis en utilisant EL4J XML de Fusion qui je suis tombé sur ce tutoriel.
Cependant, il ne fusionne pas comme prévu pour les instances, le principal problème est son pas de fusionner les deux fichiers en un seul élément aka celui qui contient 1, 2, 3 et 4.
Au lieu de cela, il écarte tout simplement 1 et 2 ou 3 et 4 en fonction du fichier est fusionnée la première.

Donc je serais reconnaissant à toute personne qui a de l'expérience avec XML Fusion si ils pouvaient me dire ce que je fais mal ou sinon est-ce quelqu'un connais un bon d'API XML pour Java qui serait capable de fusionner les fichiers que j'ai besoin?

Merci beaucoup pour Votre Aide à l'Avance

Edit:

Pourrait faire avec quelques bonnes suggestions sur cette ajouté une prime. J'ai essayé jdigital de la suggestion, mais encore d'avoir des problèmes avec XML de fusion.

Ci-dessous est un exemple du type de structure de fichiers XML que je suis en train de fusionner.

<run xmloutputversion="1.02">
    <info type="a" />
    <debugging level="0" />
    <host starttime="1237144741" endtime="1237144751">
        <status state="up" reason="somereason"/>
        <something avalue="test" test="alpha" />
        <target>
            <system name="computer" />
        </target>
        <results>
            <result id="1">
                <state value="test" />
                <service value="gamma" />
            </result>
            <result id="2">
                <state value="test4" />
                <service value="gamma4" />
            </result>
        </results>
        <times something="0" />
    </host>
    <runstats>
        <finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
        <result total="0" />
    </runstats>
</run>

<run xmloutputversion="1.02">
    <info type="b" />
    <debugging level="0" />
    <host starttime="1237144741" endtime="1237144751">
        <status state="down" reason="somereason"/>
        <something avalue="test" test="alpha" />
        <target>
            <system name="computer" />
        </target>
        <results>
            <result id="3">
                <state value="testagain" />
                <service value="gamma2" />
            </result>
            <result id="4">
                <state value="testagain4" />
                <service value="gamma4" />
            </result>
        </results>
        <times something="0" />
    </host>
    <runstats>
        <finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
        <result total="0" />
    </runstats>
</run>

Sortie attendue

<run xmloutputversion="1.02">
    <info type="a" />
    <debugging level="0" />
    <host starttime="1237144741" endtime="1237144751">
        <status state="down" reason="somereason"/>
        <status state="up" reason="somereason"/>
        <something avalue="test" test="alpha" />
        <target>
            <system name="computer" />
        </target>
        <results>
            <result id="1">
                <state value="test" />
                <service value="gamma" />
            </result>
            <result id="2">
                <state value="test4" />
                <service value="gamma4" />
            </result>
            <result id="3">
                <state value="testagain" />
                <service value="gamma2" />
            </result>
            <result id="4">
                <state value="testagain4" />
                <service value="gamma4" />
            </result>
        </results>
        <times something="0" />
    </host>
    <runstats>
        <finished time="1237144751" timestr="Sun Mar 15 19:19:11 2009"/>
        <result total="0" />
    </runstats>
</run>

source d'informationauteur Mark Davidson