print - xml string parser php




Unisci due file XML in modo ricorsivo (2)

Questa è una bella soluzione dal commento sulla pagina di manuale di PHP , che funziona anche con gli attributi:

function append_simplexml(&$simplexml_to, &$simplexml_from)
{
    foreach ($simplexml_from->children() as $simplexml_child)
    {
        $simplexml_temp = $simplexml_to->addChild($simplexml_child->getName(), (string) $simplexml_child);
        foreach ($simplexml_child->attributes() as $attr_key => $attr_value)
        {
            $simplexml_temp->addAttribute($attr_key, $attr_value);
        }

        append_simplexml($simplexml_temp, $simplexml_child);
    }
} 

C'è anche un esempio di utilizzo.

Voglio unire in modo ricorsivo 2 file XML in uno. Per esempio :

1 ° file:

<root>
    <branch1>
        <node1>Test</node1>
    </branch1>
    <branch2>
        <node>Node from 1st file</node>
    </branch2>
</root>

2 ° file:

<root>
    <branch1>
        <node2>Test2</node2>
    </branch1>
    <branch2>
        <node>This node should overwrite the 1st file branch</node>
    </branch2>
    <branch3>
        <node>
            <subnode>Yeah</subnode>
        </node>
    </branch3>
</root>

File unito:

<root>
    <branch1>
        <node1>Test</node1>
        <node2>Test2</node2>
    </branch1>
    <branch2>
        <node>This node should overwrite the 1st file branch</node>
    </branch2>
    <branch3>
        <node>
            <subnode>Yeah</subnode>
        </node>
    </branch3>
</root>

Voglio il secondo file da aggiungere al primo file. Ovviamente la fusione può essere eseguita con qualsiasi profondità dell'XML.

Ho cercato su Google e non ho trovato uno script che funzionasse correttamente.

Mi potete aiutare per favore ?


xml2array è una funzione che converte un documento xml in un array. Una volta creati i due array, puoi utilizzare array_merge_recursive per unirli. Quindi è possibile riconvertire l'array in xml con XmlWriter (dovrebbe essere già installato).





simplexml