0

単純な XML 文字列があります。

$sample = new SimpleXMLElement('<root><parent><child1></child1></parent></root>');

xpath() でノードを見つけて、このノードに子を追加しようとします。

$node = $sample->xpath('//parent');
$node[0]->addChild('child2');
echo $sample->asXML();

ご覧のとおり、 は の子としてではなく、 のchild2子として追加されます。child1parent

<root>
  <parent>
    <child1>
      <child2></child2>
    </child1>
  </parent>
</root>

しかし、XML を変更すると、addChild() はうまく機能します。このコード

$sample = new SimpleXMLElement('<root><parent><child1><foobar></foobar></child1></parent></root>');
$node = $sample->xpath('//parent');
$node[0]->addChild('child2');
echo $sample->asXML();

戻り値

<root>
  <parent>
    <child1>
      <foobar></foobar>
    </child1>
    <child2>
    </child2>
  </parent>
</root>

だから私は2つの質問があります:

  1. なんで?
  2. 子がいない場合child2、 の子として追加するにはどうすればよいですか?parentchild1
4

1 に答える 1