Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 新创建的simplexml节点上的dom\u import\u simplexml出现问题_Php_Simplexml - Fatal编程技术网

Php 新创建的simplexml节点上的dom\u import\u simplexml出现问题

Php 新创建的simplexml节点上的dom\u import\u simplexml出现问题,php,simplexml,Php,Simplexml,我正在处理一个扩展SimpleXMLElement的类: 由于它是一个SimpleXMLElement,我可以在其中动态创建XML节点: $xml = new MyXML('<foo/>'); $xml->bar = 'Test'; print $xml->asXML(); // <foo><bar>Test</bar></foo> 但是,如果我在运行cdata之前强制创建SimpleXMLElement节点,它将再次工作

我正在处理一个扩展SimpleXMLElement的类:

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

$xml = new MyXML('<foo/>');
$xml->bar = 'Test';
print $xml->asXML(); // <foo><bar>Test</bar></foo>
但是,如果我在运行cdata之前强制创建SimpleXMLElement节点,它将再次工作:

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

我很好奇我发现的是否是一个bug,以及是否有任何方法可以在不首先启动节点的情况下解决它。

好的,我当然可以复制它,在cdata中调用$this->asXML将产生false,而$this->getName将产生一个空字符串。此时节点似乎还没有“完成”,即到父元素的链接。例如,内置方法$xml->foo->addAttribute'a','b';也会失败。更多的是一个非常合理的功能请求,然后是一个实际的bug IMHO。谢谢,使用$this->getName,我至少可以检测出问题的情况。
$xml = new MyXML('<foo/>');
$xml->bar->cdata('Test');
Warning: dom_import_simplexml(): Invalid Nodetype to import in [..]
$xml = new MyXML('<foo/>');
$xml->bar = '';
$xml->bar->cdata('Test');
print $xml->asXML(); // <foo><bar><![CDATA[Test]]></bar></foo>