从PHP对象查找和填充XML节点


Find and fill XML nodes from a PHP object

首先,对不起我的英语。

我有一个包含很多节点的XML,比如:

   <first>
      <second>
         <third/>
         <fourth/>
      </second>
      <fifth>
          <sixth>
             <seventh/>
          </sixth>
      </fifth>
    </first>

,我有一个对象,像:对象{第三:"自闭症",第四:"asdasd",第七:"asdasdasd"}

我如何遍历XML的所有节点,而不考虑它们的父节点,并用对象中现有属性的值填充每个节点?

下面是使用SimpleXML的方法:

<?php
$object = (object) array(
    'third'   => 'asd',
    'fourth'  => 'asdasd',
    'seventh' => 'asdasdasd'
);
$xml = <<<XML
<first>
    <second>
        <third />
        <fourth />
    </second>
    <fifth>
        <sixth>
            <seventh />
        </sixth>
    </fifth>
</first>
XML;
$sxe = new SimpleXMLElement($xml);
foreach ($object as $key => $value) {
    $node            = $sxe->xpath("//*[./{$key}]");
    $node[0]->{$key} = $value;
}
echo $sxe->asXML();
输出:

<?xml version="1.0"?>
<first>
    <second>
        <third>asd</third>
        <fourth>asdasd</fourth>
    </second>
    <fifth>
        <sixth>
            <seventh>asdasdasd</seventh>
        </sixth>
    </fifth>
</first>