网站地图    收藏   

主页 > 后端 > php资料库 >

PHP中通过SimpleXMLElement配合DOMDocument提取XML中的H

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] PHP中的simplexml_load_file在解析标准XML时没问题, 但是有两点缺陷: 1. 默认会忽略CDATA的内容 2. 所有HTML标签会被忽略, 在上级节点中能看到, 但是无法通过xpath检索 第一点可以通过设置simple...

PHP中的simplexml_load_file在解析标准XML时没问题, 但是有两点缺陷:
1. 默认会忽略CDATA的内容
2. 所有HTML标签会被忽略, 在上级节点中能看到, 但是无法通过xpath检索

第一点可以通过设置simplexml_load_file的LIBXML_NOCDATA来解决
第二点无法直接解决, 只能通过其他办法, 将HTML节点提取出后, 使用DOMDocument来抽取所要的内容.

相关代码例子如下:

$xml = simplexml_load_file("embeded_html.xml", null, LIBXML_NOCDATA);
$node = $xml->xpath("/PathToHere/ContentItem/DataContent");
$children = $node[0]->children();
$html = $children->asXML();
//print_r($html);
$dom = new DOMDocument;
$dom->loadHTML($html);
//get content
$items = $dom->getElementsByTagName('div');

foreach ($items as $item) {
if ($item->getAttribute('class') == 'content-attr') {
echo $item->nodeValue, PHP_EOL;
}
}

补充:
后来对方技术又提供了另一种解决的方案:

print_r($xml->NewsItem->NewsComponent->ContentItem->DataContent->html->body);
print_r($xml->NewsItem->NewsComponent->ContentItem->DataContent->html->body->div[1]);

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论