2011-05-16 59 views
0
$dom = new DOMDocument('1.0'); 
$Rootelement = $dom->createElement('Domain', 'Root element'); 
$dom->appendChild($Rootelement); 

$extraInfo=$dom->createElement('extrainfo'); 
$Rootelement->appendChild($extraInfo); 

$rootTextNode=$dom->createTextNode("Co > S&S "); 
$extraInfo->appendChild($rootTextNode); 

header ("Content-Type:text/xml"); 
echo $dom->saveXML(); 

我想在DOM中的CDATA节的例子,并卡在这里。我创建了一个包含非法字符(如'>','&')的'xml节点,但是当我看到上述代码浏览器的输出时,不会抛出错误,指出非法字符或XML的用法不正确。我记得如果你不把这些字符保存在CDATA部分中,这个错误就会弹出来。DOM解析器 - CDATA查询

有人可以帮助我什么我失踪..按照我应该给我一些错误的浏览器,但我收到正确的输出!

问候, Priti

回答

2

你是编程构建一个DOM,然后将其转换为XML。

您正在使用的库将将文本节点包装在CDATA部分中,或者用实体(>等)表示具有特殊含义的XML中的字符。要么是有效的和等价的。

这也是为什么我们使用XML库而不是模板来构建XML文档。他们为我们照顾所有这些,并阻止我们以非完整文件形式结束。

+0

+1并且在这里它们被编码:'Co > S & S'。 – lonesomeday 2011-05-16 09:25:14

+0

似乎我发现了一些东西 - 当你使用CreateTextnode()时,它会将xml认为是非法字符的操作转换为等价的实体。就像在CDATA部分那样,它会保持原样。在这两种情况下,用户都不会显示我正在查找的错误:)。谢谢大卫。 – user269867 2011-05-16 09:38:29