How to retrieve comments from within an XML Document in PHP

后端 未结 4 1712
走了就别回头了
走了就别回头了 2020-12-04 03:04

I want to extract all comments below a specific node within an XML document, using PHP. I have tried both the SimpleXML and DOMDocument methods, but I keep getting blank out

相关标签:
4条回答
  • 2020-12-04 03:44

    Use XMLReader. Comments can be easily detected/found, they are xml elements of type COMMENT. For details see PHP documentation: The XMLReader class

    Code example:

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

    And in array $comments you will have all comments found in XML file.

    0 讨论(0)
  • 2020-12-04 03:51

    If you are using a SAX event driven-parser, the parser should have an event for comments. For example, when using Expat you would implement a handler and set it using:

    void XMLCALL
    XML_SetCommentHandler(XML_Parser p,
                          XML_CommentHandler cmnt);
    
    0 讨论(0)
  • 2020-12-04 03:59

    SimpleXML cannot handle comments, but the DOM extension can. Here's how you can extract all the comments. You just have to adapt the XPath expression to target the node you want.

    $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);
    }
    
    0 讨论(0)
  • 2020-12-04 04:01

    Do you have access to an XPath API ? XPath allows you to find comments using (e.g.)

    //comment()
    
    0 讨论(0)
提交回复
热议问题