@fanhypermax

Как вытащить и вставить элементы xml?

Как сделать что бы вытащить из car элементы model и вставить их в createElement('items')?
Что бы в конечном итоге получилось

<items>
   <model>volvo</model>
   <model>Lada</model>
</items>


$dom_xml = new DomDocument();
$xml= <<<XML
<car>
   <model>volvo</model>
   <model>Lada</model>
</car>
XML;

$dom_xml->Load($xml);
$mod = $dom_xml->getElementsByTagName("car");

$items = $dom_xml->createElement('items');
$items ->appendChild($mod );
$dom_xml->appendChild($items );

$xml= $dom_xml->saveXML();
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
ред.
Подразумевается, что узел car присутствует в единственном экземпляре.

<?php
$dom_xml = new domDocument();
$xml= <<<XML
<car>
   <model>volvo</model>
   <model>Lada</model>
   <fdsdf>Lada</fdsdf>
   <qwqw>Lada</qwqw>
   <model>Lada</model>
   <fdsdfsdfs>Lada</fdsdfsdfs>
   <sd>ASD</sd>
   <bv>213</bv>
</car>
XML;
$dom_xml->LoadXml($xml);
$dom_xml->formatOutput = TRUE;
$car = $dom_xml->getElementsByTagName("car")->item(0);
$car_childs = $car->childNodes;
$dom_items = $dom_xml->createElement('items');

foreach($car_childs as $mod){
	if($mod->tagName != null){
		$dom_element = $dom_xml->createElement($mod->tagName, $mod->nodeValue);
		$dom_items ->appendChild($dom_element);		
	}
}
$dom_xml ->appendChild($dom_items );
//удаляем узел car
//$dom_xml->removeChild($car);
$xml= $dom_xml->save('new.xml')

результат
<?xml version="1.0"?>
<car>
   <model>volvo</model>
   <model>Lada</model>
   <fdsdf>Lada</fdsdf>
   <qwqw>Lada</qwqw>
   <model>Lada</model>
   <fdsdfsdfs>Lada</fdsdfsdfs>
   <sd>ASD</sd>
   <bv>213</bv>
</car>
<items>
  <model>volvo</model>
  <model>Lada</model>
  <fdsdf>Lada</fdsdf>
  <qwqw>Lada</qwqw>
  <model>Lada</model>
  <fdsdfsdfs>Lada</fdsdfsdfs>
  <sd>ASD</sd>
  <bv>213</bv>
</items>

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы