当传递的simplexml_import_dom()
不是兼容的子类型时,DOMNode
函数会不时给出以下错误:
simplexml_import_dom():要导入的节点类型无效
所以我想知道哪些DOMNode
类型有效导入?
答案 0 :(得分:1)
首先,您通过DOMNode
导入的simplexml_import_dom
必须与文档相关联。这与它的DOMNode
子类型无关,没有文档的节点将被拒绝:
simplexml_import_dom():导入的节点必须具有关联的文档
接下来,导入的节点必须是DOMElement
类型。
这两个是唯一的要求(见source)。
摘要:您可以将任何DOMElement
ownerDocument
导入simplexml。
如果您需要导入没有文档的DOMNode
,请创建一个并导入它。
/** @var XMLReader $reader */
$node = $reader->expand();
if (!$node instanceof DOMElement) {
throw new UnexpectedValueException(
sprintf('Expected DOMElement, %s given.', get_class($node))
);
}
$doc = new DomDocument();
$node = $doc->importNode($node, true);
$sxnl = simplexml_import_dom($node);
如果节点不是DOMElement
那么解决问题就更难处理了,具体取决于你需要什么,没有简单的回退,就像在simplexml中没有简单的回归一样那一点。
要找出SimpleXMLElement表示的节点类型,请参阅: