2013-10-10 7 views
0

Я получил Xml файлAppend Xml дети дети Элемента В Php

<user> 
<prop name="A"> 
<sub name="X"> 
</sub> 
</prop> 
<prop name="B"> 
<sub name="Y"> 
</sub> 
</prop> 
</user> 

Я хочу добавить $Xml=<design name="J" path="folder"></design>' в к югу от имени = "Y". Так должно быть.

<user> 
<prop name="A"> 
<sub name="X"> 
</sub> 
</prop> 
<prop name="B"> 
<sub name="Y"> 
<design name="J" path="folder"></design> 
</sub> 
</prop> 
</user> 

Как это сделать с использованием DOMDocument в php?

ответ

0

Вы могли бы сделать это с помощью DomXPath и запросов для <sub> элементов с определенным значением атрибута, как //sub[@name="Y"]

например http://3v4l.org/VQv5k

$data = '<user><prop name="A"><sub name="X"></sub></prop><prop name="B"><sub name="Y"></sub></prop></user>'; 
$xml = new DomDocument; 
$xml->loadXML($data); 

//create a xpath instance 
$xpath = new DomXpath($xml); 

//query for <sub name="Y"> and use the first found item 
$subY = $xpath->query('//sub[@name="Y"]')->item(0); 

//create <design> element 
$design = $xml->createElement('design'); 
//add attributes 
$design->setAttribute('name', 'J'); 
$design->setAttribute('path', 'folder'); 
//append it to the found <sub> element 
$subY->appendChild($design); 


//optional format output 
$xml->formatOutput = true; 
$xml->preserveWhiteSpace = false; 

//output XML 
echo $xml->saveXML(); 

бы привести:

<?xml version="1.0"?> 
<user> 
    <prop name="A"> 
    <sub name="X"/> 
    </prop> 
    <prop name="B"> 
    <sub name="Y"> 
     <design name="J" path="folder"/> 
    </sub> 
    </prop> 
</user> 
Смежные вопросы