Başka SimpleXMLElement bir PHP SimpleXMLElement eklemek için bir yolu var mı?

2 Cevap php

Bu doğru seçim olmalıdır gibi SimpleXMLElement "addChild" yöntemi gibi görünüyor, ama görünüşe göre sadece yeni bir çocuğun tagname temsil eden dizeyi alır.

Örneğin, ağacın düğümleri başvuran ve bunları ayarlamak için nesne-ish notasyonu var $ SimpleXMLNode-> çocuk = değer, ama bu sadece basit bir metin / sayısal değerler için çalışmak gibi görünüyor. Ben aşağıdakileri deneyin:

$s = new SimpleXMLElement('<root/>');
$t = new SimpleXMLElement('<child/>');
$s->a = $t;
echo $s->asXML()

Alıyorum:

<?xml version="1.0"?>
<root><a></a></root>

: Ben umuyordum zaman

<?xml version="1.0"?>
<root><a><child/></a></root>

Ben bir dizeye $ t dönüştürme ve daha sonra (XML bildirimi dışarı sıyırma sonra) ekleyerek düşündüm:

$s->a = substr($t->asXML(),22)

Ancak bu verir:

<?xml version="1.0"?>
<root><a>&lt;child/&gt;</a></root>

Yine, ne ben bekliyordum.

SimpleXML ile bu tür bir şey başarmak için tipik bir yolu var mı?

2 Cevap

Bilinmeyen hey. Bunu başarmak için SimpleXML nesnelere DOMElement arayüzü kullanmak zorunda.

<?php

$s = new SimpleXMLElement('<root/>');
$t = new DOMElement('child');

$dom = dom_import_simplexml($s);
$dom->appendChild($t);

echo $s->asXML();
// <root><child/></root>

Eğer daha özel ayrıntıları ihtiyacınız varsa, bana bildirin. Dom_import_simplexml için dokümantasyon ve görüşleri çeşitli örnekler (vardır) yöntemi de: http://php.net/dom_import_simplexml

Ben bu yardımcı olacaktır emin değilim ama beklediğiniz gibi aynı zamanda çalışmak için SimpleXML genişletmek olabilir. İşte bLibrary Xml sınıf için üzerinde çalıştığı bir projedir. Eğer beklediğiniz gibi çalışmaya SimpleXML terzi ona bakabilirsiniz.