2013-10-10 194 views
0

我的XML文件追加的XML元素的兒童的兒童在PHP

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

我想在分NAME = 「Y」 添加$Xml=<design name="J" path="folder"></design>'。 所以它一定是。

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

我該怎麼做在PHP中使用DOMDocument?

回答

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>