(PHP 4 >= 4.1.0)
DomNode::append_child — Düğüme en küçük çocuk olarak bir çocuk ekler
Bu işlev mevcut çocukların sonuna bir çocuk daha ekler. Eğer düğümün hiç çocuğu yoksa yeni bir çocuk listesini oluşturulur.
Eklenecek düğüm; DomDocument::create_element(), DomDocument::create-text-node() gibi işlevlerle oluşturulabilir veya başka bir düğüm kullanılabililir.
Bilginize:
Bu yöntemi kullanarak düğüme yeni bir bir öznitelik ekleyemezsiniz. Bunun için DomElement::set_attribute() yöntemini kullanmalısınız.
İşlem başarılı olursa eklenen düğüm, olmazsa FALSE döner.
Sürüm: | Açıklama |
---|---|
4.3.0 | Başka bir belgenin düğümünün eklenmesine artık izin verilmiyor. |
4.3.0 | PHP 4.3.0 öncesinde, yeni çocuk eklenmeden önce bir kopyası yapılırdı. Böylece işleve aktarılan düğüme dokunulmadan kopyası üzerinde değişiklik yapılabilirdi. Aktarılan düğümün kendi çocukları varsa onlar da kopyalanırdı. Böylece bir XML belgeyi büyük parçalar halinde kopyalamak kolay olurdu. Yöntemin dönüş değeri eklenen düğüm olurdu. Eklenen düğüm üzerinde değişiklik yapmak için bu dönüş değerini kullanmak gerekirdi (işleve aktarılanı değil). |
4.3.0 ve 4.3.1 | Yeni düğüm eklenmeden önce, ekleneceği bağlamda zaten mevcutsa eski düğüm silinir. Böylece yeni düğüm taşınırken artık bir kopyasının yapılmasına gerek kalmaz. Bu davranış W3C DOM belirtimine uygundur. Eski davranışı tercih ediyorsanız bu yöntemi çağırmadan önce bir DomNode::clone_node() çağrısı yapmalısınız. |
4.3.2 | Yeni düğüm eklenmeden önce, ekleneceği ağaçta zaten mevcutsa eski düğüm silinir. PHP 4.3.1 sürümündeki davranış uygulanır. |
Aşağıdaki örnekte yeni bir belgeye bir eleman düğümü eklendikten sonra elemanın align özniteliğine left değeri atanmaktadır.
Örnek 1 - Bir çocuk düğüm eklemek
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>
Yukarıdaki örnek şöyle de yazılabilirdi:
Örnek 2 - Bir çocuk eklemek
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>
Aşağıda daha karmaşık bir örneğe yer verilmiştir. Önce belli bir eleman aranmakta, sonra bu eleman çocukları ile birlikte bir kopyası yapılıp bir kardeş düğüm olarak eklenmektedir. Son olarak eklenen elemana bir öznitelik atanmakta ve tüm belge çıktılanmaktadır.
Örnek 3 - Bir düğümü kendine kardeş olarak eklemek
<?php
include("example.inc");
if (!$dom = domxml_open_mem($xmlstr)) {
echo "Belge çözümlenirken hata oluştu\n";
exit;
}
$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];
$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
?>
Yukarıdaki örnek DomNode::append-child() yerine DomNode::insert_before() kullanarak da yazılabilirdi.
DomNode::appendChild() yöntemini kullanın.