新创建的SimpleXML节点上的dom_import_simplexml问题

时间:2010-09-16 00:18:59

标签: php simplexml

我正在开设一个扩展SimpleXMLElement的课程:

class MyXML extends SimpleXMLElement {
    public function cdata($text) {
        $node = dom_import_simplexml($this);
        $owner = $node->ownerDocument;
        $node->appendChild($owner->createCDATASection($text));
        return $this;
    }
}

由于它是SimpleXMLElement,我可以在其中动态创建XML节点:

$xml = new MyXML('<foo/>');
$xml->bar = 'Test';
print $xml->asXML(); // <foo><bar>Test</bar></foo>

但是当我尝试运行时:

$xml = new MyXML('<foo/>');
$xml->bar->cdata('Test');

我明白了:

Warning: dom_import_simplexml(): Invalid Nodetype to import in [..]

但是,如果我在运行SimpleXMLElement之前强制创建cdata()节点,它会再次起作用:

$xml = new MyXML('<foo/>');
$xml->bar = '';
$xml->bar->cdata('Test');
print $xml->asXML(); // <foo><bar><![CDATA[Test]]></bar></foo>

我很好奇,如果我发现的是一个错误,并且如果有任何方法可以解决它而不首先“启动”节点。

0 个答案:

没有答案