0

まず、私の英語について申し訳ありません。

したがって、次のような多くのノードを持つ XML があります。

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

そして、私は次のようなオブジェクトを持っています:

親に関係なく、XML のすべてのノードを実行し、オブジェクトの既存のプロパティの値をすべてのノードに入力するにはどうすればよいでしょうか?

4

1 に答える 1

1

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>
于 2013-05-16T18:19:36.983 に答える