PHP DOMDocument:文本节点可以重用吗?

时间:2018-12-13 09:30:52

标签: php domdocument

我有以下代码:

var txtInput = $('.person-range'); // your input field
txtInput.change(function() {
  console.log(this.value);
  // or,
  console.log($(this).val());
});

我不明白的是为什么输出如下:

    $doc = new \DOMDocument('1.0', 'UTF-8');
    $doc->formatOutput = true;

    $element = $doc->createElement('ROOT');
    $root = $doc->appendChild($element);

    $textNode = $doc->createTextNode('I should be in both nodes');


    $element = $doc->createElement('FIRST');
    $first = $root->appendChild($element);
    $first->appendChild($textNode);

    $element = $doc->createElement('SECOND');
    $second = $root->appendChild($element);
    $second->appendChild($textNode);


    var_dump($doc->saveXML($root));

为什么FIRST元素不包含文本?第二个人偷了吗? :)因为如果我删除创建SECOND元素的代码部分,则第一个将按预期方式获得其文本节点。

1 个答案:

答案 0 :(得分:1)

一个节点只能有1个父节点,因此,一旦将其添加到另一个节点,它便会保留在那里。

您可以使用cloneNode()轻松克隆节点,但顾名思义-它不是同一节点,而是一个副本。如果将以下行更改为...

$first->appendChild($textNode->cloneNode(true));

你会得到...

<ROOT>
  <FIRST>I should be in both nodes</FIRST>
  <SECOND>I should be in both nodes</SECOND>
</ROOT>