我想使用 PHP 提取 XML 文档中特定节点下的所有注释。我已经尝试过 SimpleXML 和 DOMDocument 方法,但我一直得到空白输出。有没有办法从文档中检索评论而不必求助于正则表达式?
问问题
3423 次
4 回答
6
SimpleXML 不能处理注释,但 DOM 扩展可以。这是提取所有评论的方法。您只需调整 XPath 表达式以定位您想要的节点。
$doc = new DOMDocument;
$doc->loadXML(
'<doc>
<node><!-- First node --></node>
<node><!-- Second node --></node>
</doc>'
);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//comment()') as $comment)
{
var_dump($comment->textContent);
}
于 2010-01-01T00:17:35.140 回答
2
您可以访问 XPath API 吗?XPath 允许您使用(例如)查找注释
//comment()
于 2009-12-31T19:29:25.347 回答
1
使用 XMLReader。可以很容易地检测/找到注释,它们是 COMMENT 类型的 xml 元素。有关详细信息,请参阅PHP 文档:XMLReader 类
代码示例:
$reader = new XMLReader();
$reader->open('filename.xml');
while ($reader->read()){
if ($reader->nodeType == XMLReader::COMMENT) {
$comments[] = $reader->readOuterXml();
}
}
在数组 $comments 中,您将在 XML 文件中找到所有注释。
于 2018-01-21T01:09:46.043 回答
0
如果您使用的是 SAX 事件驱动解析器,则解析器应该有一个用于注释的事件。例如,当使用 Expat 时,您将实现一个处理程序并使用以下方法设置它:
void XMLCALL
XML_SetCommentHandler(XML_Parser p,
XML_CommentHandler cmnt);
于 2009-12-31T19:26:06.833 回答