PHP.mk документација

DOMNode::cloneNode

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

domnode.clonenode.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека domnode.clonenode.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
DOMNode::cloneNode

Референца за `domnode.clonenode.php` со подобрена типографија и навигација.

domnode.clonenode.php

DOMNode::cloneNode

класата mysqli_driver

DOMNode::cloneNode Клонира јазол

= NULL

public DOMNode::cloneNode(bool $deep = false): DOMNode|false

Креира копија на јазолот.

Параметри

deep

Укажува дали да се копираат сите потомци на јазолот. Овој параметар е стандардно поставен на false.

Вратени вредности

Клонираниот јазол.

Белешки од корисници 5 белешки

frame на dynamiccreated dot de
пред 13 години
Remeber that DOMNode always needs a reference to a parent node or DOMDocument.

For example, if you try to clone a node - copy all children - and overwrite or delete the variable which holds the cloned node - all children will loose any reference and getting invalid.

This will cause a nice message like "Couldn't... node no longer exists" if you have luck. In most cases PHP only gives you the poor information "Couldn't fetch DOM[...]" which makes hard to find out whats going on, depending on the current operation.
[montana] на [percepticon] точка [com]
пред 17 години
<?php

//@oliver thanks for example source...

/*
 cloneNode(false) does not omit 
 Attributes of cloned node, 
 to achieve this an iteration is required. 
 this is probably less efficient 
 than merely creating a new 
 node from the desired nodeName 
 but in some cases could be useful.

use case: 

omit subnodes and attributes of 
secured portions of an xml document 
without altering expected general structure;
*/
//xml to use

$file="<?xml version='1.0'?>
<book type='paperback'>
    <title name='MAP'>Red Nails</title>
    <price>$12.99</price>
    <author>
        <name first='Robert' middle='E' last='Howard'/>
        <birthdate disco='false' nirvana='definitely'>
            9/21/1977 
            <month title='september' />
        </birthdate>
    </author>
    <author>
        <name first='Arthur' middle='Mc' last='Kayn'/>
    </author>
</book>";

$doc = new domDocument;

$doc->loadXML($file);

$xpath = new domXPath($doc);

$query = "//author/birthdate";
$xpathQuery = $xpath->query($query);

//would be a loop in production code...
$child = $xpathQuery->item(0); 

$parent = $child->parentNode;

$doppel = $child->cloneNode(false);

$limit = $doppel->attributes->length;

for ($a=0;$a<$limit;$a++) {
    $doppel->removeAttributeNode($doppel->attributes->item(0));
}
//swap for now empty node
$parent->replaceChild( $doppel, $child); 

print $doc->saveXML();

?>
cmd на 1xinternet точка de
пред 9 години
If you need to clone node including all child DOMNode elements:

private function cloneNode($node){

        $nd = new DOMNode();

        for ($i = 0; $i < $node->childNodes->length; $i++) {
            $child = $node->childNodes->item($i);
            if ($child->nodeType === XML_TEXT_NODE) {
                $nd->appendChild($node->cloneNode(true));
            }
            else{
                $nd->appendChild($this->cloneNode($child));
            }
        }

        return $nd;
    }
cemkalyoncu на gmail точка com
пред 16 години
If you need some function to clone a node without touching namespaces you can use the following.

<?php
private function cloneNode($node,$doc){
    $nd=$doc->createElement($node->nodeName);
            
    foreach($node->attributes as $value)
        $nd->setAttribute($value->nodeName,$value->value);
            
    if(!$node->childNodes) 
        return $nd;
                
    foreach($node->childNodes as $child) {
        if($child->nodeName=="#text")
            $nd->appendChild($doc->createTextNode($child->nodeValue));
        else
            $nd->appendChild(cloneNode($child,$doc));
    }
            
    return $nd;
}
?>
piotr dot stop dot spam at gmail dot com
пред 11 години
If you have an object that holds a DOMNode, cloning the object won't clone the DOMNode with it. If you simply copy the object or add its DOMNode several times, you will in fact only move the DOMNode in the tree, not multiply it. That might seem obvious, but took me half a day to find out.

The object needs to use __clone and clone the node manually:

<?php
class containsNode {
    public $node; //set from somewhere

    public function __clone() {
        $this->node = $this->node->cloneNode(TRUE);
    }
}
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.