如何从PHP中的XML文档中检索注释

时间:2009-12-31 19:21:51

标签: php xml comments extract

我想使用PHP提取XML文档中特定节点下的所有注释。我已经尝试过SimpleXML和DOMDocument方法,但我一直在输出空白。有没有办法从文档中检索注释而不必使用正则表达式?

4 个答案:

答案 0 :(得分:5)

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);
}

答案 1 :(得分:2)

您是否可以访问XPath API? XPath允许您使用(例如)

查找注释
//comment()

答案 2 :(得分:0)

如果您使用的是SAX事件驱动解析器,则解析器应该有一个注释事件。例如,使用Expat时,您将实现一个处理程序并使用以下命令设置它:

void XMLCALL
XML_SetCommentHandler(XML_Parser p,
                      XML_CommentHandler cmnt);

答案 3 :(得分:0)

使用XMLReader。可以轻松检测/找到注释,它们是COMMENT类型的xml元素。 有关详细信息,请参阅PHP documentation: The XMLReader class

代码示例:

$reader = new XMLReader();
$reader->open('filename.xml');
while ($reader->read()){
    if ($reader->nodeType == XMLReader::COMMENT) {
        $comments[] = $reader->readOuterXml();
    }
}

在数组$注释中,您将在XML文件中找到所有注释。