Jeszcze jeden blog o programowaniu

Radosne twórczości leniwego programisty

Dodawanie obiektu SimpleXmlElement jako dziecka do innego obiektu SimpleXmlElement

leave a comment »

Application - XML Podczas budowania struktury XML z wykorzystaniem SimpleXmlElement dla jachcenawakacje.pl natknąłem się na problem dodawania do obiektu typu SimpleXmlElement jako dziecka innego obiektu SimpleXmlElement – wyciętego z innej struktury XML. Problem jest o tyle dziwny, że metoda SimpleXmlElement::addChild() przyjmuje jako wartość tylko i wyłącznie łańcuch znaków. W związku z dość sporą ilością kodu, jaki trzeba by napisać, aby przenieść jedną strukturę XML do innej takie rozwiązanie nie wchodziło w grę. Z pomocą przyszedł kod udostępniony przez członka społeczności Stackoverflow.

<?php
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><element></element>');
$request = $xml->addChild('request');
$request->addChild('type', 'test');
$sxe = simplexml_load_string('<sxe></sxe>');
$inner1 = $sxe->addChild("inner1");
$inner2 = $inner1->addChild("inner2");
$inner3 = $inner2->addChild("inner3");
$toDom = dom_import_simplexml($xml);
$fromDom = dom_import_simplexml($sxe);
$toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
header('Content-type: application/xml; charset=utf-8');
echo $xml->asXML();

Oczywiście najważniejsze są tutaj linie 9-11, które to realizują całe zadanie kopiowania struktury pomiędzy XML.
Efekt poniżej:

<?xml version="1.0" encoding="UTF-8"?>
<element>
    <request>
        <type>test</type>
    </request>
    <sxe>
        <inner1>
            <inner2>
                <inner3/>
            </inner2>
        </inner1>
    </sxe>
</element>

Link do oryginału: http://stackoverflow.com/questions/4778865/php-simplexml-addchild-with-another-simplexmlelement/4778964#4778964

Reklamy

Written by filipgorczynski

2011.06.15 @ 11:06:42

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: