php实现dom操作
PHP实现DOM操作的方法
PHP提供了内置的DOM扩展库,用于解析和操作XML/HTML文档。以下是常见的DOM操作方法:
加载HTML/XML文档
$dom = new DOMDocument();
$dom->loadHTML('<html><body>Test</body></html>'); // 加载HTML字符串
$dom->loadHTMLFile('example.html'); // 加载HTML文件
$dom->load('example.xml'); // 加载XML文件
查询元素
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//div[@class='content']"); // XPath查询
$paragraphs = $dom->getElementsByTagName('p'); // 按标签名获取
$element = $dom->getElementById('main'); // 按ID获取
创建新元素
$newDiv = $dom->createElement('div', 'New content');
$newDiv->setAttribute('class', 'container');
$dom->appendChild($newDiv); // 添加到文档
修改元素
$firstPara = $dom->getElementsByTagName('p')->item(0);
$firstPara->nodeValue = 'Updated text'; // 修改文本内容
$firstPara->setAttribute('style', 'color:red'); // 添加/修改属性
删除元素
$oldElement = $dom->getElementById('old');
$oldElement->parentNode->removeChild($oldElement); // 移除元素
保存修改后的文档
$dom->saveHTML(); // 获取HTML字符串
$dom->saveHTMLFile('output.html'); // 保存为HTML文件
$dom->save('output.xml'); // 保存为XML文件
处理HTML片段
$fragment = $dom->createDocumentFragment();
$fragment->appendXML('<span>Fragment</span>');
$dom->getElementsByTagName('body')->item(0)->appendChild($fragment);
注意事项
-
处理不规范的HTML时,可以启用libxml错误抑制:
libxml_use_internal_errors(true); $dom->loadHTML($html); libxml_clear_errors(); -
对于大型文档,考虑使用XMLReader进行流式处理以提高性能
-
修改属性前应先检查元素是否存在,避免错误
-
输出HTML时,可以使用
LIBXML_NOEMPTYTAG选项保留空标签格式







