Agregar datos en xml en cierto nodo

Tengo un archivo xml anidado en el que quiero insertar elementos en ciertos nodos. La estructura xml es como:

<root>
    <item id="1">
        <content><name>ITEM 1</name></content>
        <item id="3">
            <content><name>ITEM 3</name></content>
            <item id="4">
                <content><name>ITEM 4</name></content>
            </item>
        </item>
    </item>
    <item id="2">
        <content><name>ITEM TWO</name></content>
    </item>
</root>

Supongamos que quiero insertar algún elemento como elemento secundario del ID de elemento 4, usando php, ¿cuál sería la sintaxis para encontrar el nodo del elemento 4 y agregarle otro nodo de elemento?

preguntado el 12 de junio de 12 a las 12:06

La sintaxis depende de su código. ¿Cuál es tu código? Puede, por ejemplo, utilizar substr_replace por ejemplo, y simplemente inserte algo de texto allí porque XML es texto. -

1 Respuestas

primer uso simplexml luego busque la identificación usando xpath, luego agregue el niño:

$xml = '<root>
    <item id="1">
        <content><name>ITEM 1</name></content>
        <item id="3">
            <content><name>ITEM 3</name></content>
            <item id="4">
                <content><name>ITEM 4</name></content>
            </item>
        </item>
    </item>
    <item id="2">
        <content><name>ITEM TWO</name></content>
    </item>
</root>';

$xml = simplexml_load_string($xml); // load the XML

$id = $xml->xpath("//*[@id='4']"); // search for id=4

$item = $id[0]->addChild('item'); // add another item
$item->addAttribute('id', '5'); // add id=5
$content = $item->addChild('content', ''); // add content
$content->addChild('name', 'ITEM 5'); // add name

echo $xml->asXML(); // output

Respondido el 12 de junio de 12 a las 13:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.