1. 先试了一个simplexml的方法,发现会过滤cdata内容
if (file_exists('index.xml'))
{
$xml =
simplexml_load_file('index.xml');
var_dump($xml);
}
else
{
exit('Error.');
}
2.再试了一个DomDocumentd的方法,发现cdata内容还是被过滤
$dom = new DomDocument(); //创建 DOM对象
$dom->load('index.xml'); //读取
XML文件
$root = $dom->documentElement; //获取
XML数据的根
read_child($root); //调用 read_child函数读取根对象
function read_child($node)
{
$children = $node->childNodes;
//获得$node的所有子节点
foreach($children as $e) //循环读取每一个子节点
{
if($e->nodeType == XML_TEXT_NODE)
//如果子节点为文本型则输出
{
echo $e->nodeValue."
";
}
else if($e->nodeType == XML_ELEMENT_NODE)
//如果子节点为节点对象,则调用函数处理
{
read_child($e);
}
}
}
3.接着试了一个改良了的cdata的格式化的办法,发现会提示simplexml异常
4.最后还是使用了DomDocument的办法,通过getElementsByTagName实现全部cdata的提取
$dom = new DomDocument(); //创建
DOM对象
$dom->load('index.xml'); //读取
XML文件
$root = $dom->documentElement; //获取
XML数据的根
$content =
$dom->getElementsByTagName_r('content');
for($i=0,$len=$content->length;$i
{
echo
$content->item($i)->nodeValue."
";
}