首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cloneNode + appendChild + insertBefore dom xml php

cloneNode + appendChild + insertBefore dom xml php
EN

Stack Overflow用户
提问于 2012-10-26 02:31:14
回答 1查看 993关注 0票数 0

我有一个xml,我将克隆父亲,并在克隆的节点下离开。更多的是给出这个错误。我想知道为什么

致命错误:第32行对C:\xampp\htdocs\xml2\cloneNew.php中的非对象调用成员函数insertBefore()

代码语言:javascript
复制
$xmla = <<<XML
<?xml version="1.0" ?>
<library>
  <book isbn="1001" pubdate="1943-01-01">
    <title><![CDATA[The Fountainhead]]></title>
    <author>Ayn Rand</author>
    <price>300</price>
  </book>
  <book isbn="1002" pubdate="1954-01-01">
    <title><![CDATA[The Lord of the Rings]]></title>
    <author>J.R.R.Tolkein</author>
    <price>500</price>
  </book>
  <book isbn="1006" pubdate="1982-01-01">
    <title><![CDATA[The Dark - Tower San]]></title>
    <author>Stephen King</author>
    <price>200</price>
  </book>
</library>
XML;

$xmlb = <<<XML
<?xml version="1.0" ?>
<library>
  <book isbn="1004" pubdate="1943-01-01">
    <title><![CDATA[The Fountainhead]]></title>
    <author>Ayn Rand</author>
    <price>300</price>
  </book>
</library>
XML;
$dom_01 = new DOMDocument();
$dom_01->loadXML($xmla);
$library_01 = $dom_01->documentElement;

$dom_02 = new DOMDocument();
$dom_02->loadXML($xmlb);
$library_02 = $dom_02->documentElement;

$xpath = new DOMXPath($dom_02);
$result = $xpath->query('/library/book[translate(@pubdate,"-","")>translate("1980-01-01","-","")]');

$library_02 = $library_02->cloneNode(true);
$newElement = $library_01->appendChild($result->item(0));
$library_01->parentNode->insertBefore($newElement, $result->item(0));

header("Content-type: text/xml");
echo $dom->saveXML();


Result:

$xmla = <<<XML
<?xml version="1.0" ?>
<library>
  <book isbn="1001" pubdate="1943-01-01">
    <title><![CDATA[The Fountainhead]]></title>
    <author>Ayn Rand</author>
    <price>300</price>
  </book>
  <book isbn="1002" pubdate="1954-01-01">
    <title><![CDATA[The Lord of the Rings]]></title>
    <author>J.R.R.Tolkein</author>
    <price>500</price>
  </book>
  <book isbn="1004" pubdate="1943-01-01">
    <title><![CDATA[The Fountainhead]]></title>
    <author>Ayn Rand</author>
    <price>300</price>
  </book>
  <book isbn="1006" pubdate="1982-01-01">
    <title><![CDATA[The Dark - Tower San]]></title>
    <author>Stephen King</author>
    <price>200</price>
  </book>
</library>
XML;
EN

回答 1

Stack Overflow用户

发布于 2012-10-26 02:37:33

您正在尝试获取documentElementparentNode不存在此类节点。

另外,如果希望将一个文档中的节点放到另一个文档中,请使用DOMDocument.importNode而不是cloneNode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13074927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档