SimpleXML Addchild在XML中的现有父元素中

时间:2017-03-20 17:01:46

标签: php xml simplexml

我想添加另一个" Rasse"元素到我现有的xml文件中,但这基本上就是我得到的:

<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="katzen.xsd">

</catalog>
<Rasse previewimage="http://http://www.planet-wissen.de/natur/haustiere/katzen/dasmiauenisteherseltenzuhoeren100~_v-gseapremiumxl.jpg">
  <titel>sdfsdf</titel>
  <aussehen fell="langhaar">sdfsdf</aussehen>
  <charakter>
    <Wohnungskatze wohnung="ja"/>
    <Familienkatze kinder="ja"/>
    <Bewegungsbedarf bewegung="hoch"/>
    <Garteneignung garten="ja"/>
  </charakter>
</Rasse>

这里发生的事情是&#34; Rasse&#34;未包含在&#34;目录&#34;

这是我的PHP代码:

$xml = simplexml_load_file('katzi.xml');

$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());

$previewimagee = $_POST['previewimage'];
$titell = $_POST['titel'];
$aussehenn = $_POST['aussehen'];
$felll = $_POST['fell'];
$Wohnungskatzee = $_POST['Wohnungskatze'];
$wohnungg = $_POST['wohnung'];
$Familienkatzee = $_POST['Familienkatze'];
$kinderr = $_POST['kinder'];
$Bewegungsbedarff = $_POST['Bewegungsbedarf'];
$bewegungg = $_POST['bewegung'];
$Garteneignungg = $_POST['Garteneignung'];
$gartenn = $_POST['garten'];


$root = $dom->appendChild($dom->createElement('Rasse'));
$Rasse = simplexml_import_dom ($root);
$Rasse->addAttribute('previewimage', $previewimagee);
$Rasse->addChild('titel', $titell);
$aussehen = $Rasse->addChild('aussehen', $aussehenn);
$aussehen->addAttribute('fell', $felll);
$charakter = $Rasse->addChild('charakter');
$Wohnungskatze = $charakter->addChild('Wohnungskatze', $Wohnungskatzee);
$Wohnungskatze->addAttribute('wohnung', $wohnungg);
$Familienkatze = $charakter->addChild('Familienkatze', $Familienkatzee);
$Familienkatze->addAttribute('kinder', $kinderr);
$Bewegungsbedarf = $charakter->addChild('Bewegungsbedarf', $Bewegungsbedarff);
$Bewegungsbedarf->addAttribute('bewegung', $bewegungg);
$Garteneignung = $charakter->addChild('Garteneignung', $Garteneignungg);
$Garteneignung->addAttribute('garten', $gartenn);

$dom->save("katzi.xml");

有人知道如何包含&#34; Rasse&#34; in&#34; catalog&#34;所以我可以添加多少新的&#34; Rasse&#34;我想要的是什么?

1 个答案:

答案 0 :(得分:0)

考虑从带有$dom->documentElement的根元素开始捕获<catalog>元素,然后在没有simplexml_import_dom路由的情况下从那里构建树,但使用createElementaddChildsetAttribute方法:

$root = $dom->documentElement;
$Rasse = $root->appendChild($dom->createElement('Rasse'));

$Rasse->setAttribute('previewimage', $previewimagee);
$Rasse->appendChild($dom->createElement('titel', $titell));
$aussehen = $Rasse->appendChild($dom->createElement('aussehen', $aussehenn));
$aussehen->setAttribute('fell', $felll);
$charakter = $Rasse->appendChild($dom->createElement('charakter'));
$Wohnungskatze = $charakter->appendChild($dom->createElement('Wohnungskatze', $Wohnungskatzee));
$Wohnungskatze->setAttribute('wohnung', $wohnungg);
$Familienkatze = $charakter->appendChild($dom->createElement('Familienkatze', $Familienkatzee));
$Familienkatze->setAttribute('kinder', $kinderr);
$Bewegungsbedarf = $charakter->appendChild($dom->createElement('Bewegungsbedarf', $Bewegungsbedarff));
$Bewegungsbedarf->setAttribute('bewegung', $bewegungg);
$Garteneignung = $charakter->appendChild($dom->createElement('Garteneignung', $Garteneignungg));
$Garteneignung->setAttribute('garten', $gartenn);

$dom->save("katzi.xml");