好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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中通过SimpleXMLElement配合DOMDocument提取XML中的H的详细内容...

  阅读:44次