Я хочу извлечь все комментарии ниже определенного узла в документе XML, используя PHP. Я пробовал как методы SimpleXML, так и DOMDocument, но я продолжаю получать пустые выходы. Есть ли способ получить комментарии из документа без необходимости прибегать к Regex?
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); }
У вас есть доступ к API XPath? XPath позволяет находить комментарии, используя (например)
//comment()
Если вы используете SAX event-parser, синтаксический анализатор должен иметь событие для комментариев. Например, при использовании Expat вы должны реализовать обработчик и установить его, используя:
void XMLCALL XML_SetCommentHandler(XML_Parser p, XML_CommentHandler cmnt);