读取XML注释的值

时间:2014-12-27 08:58:47

标签: php xml xpath

直升机,
我有一个XML文件。我想做读评论值(100001)和行号。 PHP / Ajax自动完成需要,当我将序列号放在文本框中时,它应该在另外2个文本框中显示XML行号和注释值。 我不知道怎么做,如果有人可以提供帮助,我会非常尊重它。

<serial>KLH4587KIJ</serial> <!--    100001  -->
<serial>MHF4557PDS</serial> <!--    100002  -->

1 个答案:

答案 0 :(得分:4)

使用下一个代码:

$doc = new DOMDocument;
$doc->loadXML('<serials><serial>KLH4587KIJ</serial><!-- 100001 --><serial>MHF4557PDS</serial><!-- 100002 --></serials>');

$xpath = new DOMXPath($doc);

foreach ($xpath->query('//comment()') as $comment){
    var_dump($comment->textContent);
}

如您所见,您必须将serial标记封装在父serials

您可以在此处查看:http://codepad.org/UoZvPxjl


修改。添加行号:

$doc = new DOMDocument;
$doc->loadXML('<serials><serial>KLH4587KIJ</serial><!-- 100001 --><serial>MHF4557PDS</serial><!-- 100002 --></serials>');

$xpath = new DOMXPath($doc);
$lineNo = 0;
foreach ($xpath->query('//serial/following::comment()') as $comment){
    $serial= $xpath->query('//serial', $comment)->item($lineNo)->textContent;
    var_dump ("Line number: ".$lineNo ." Serial number: ".$serial." Comented number: ".$comment->textContent);
    $lineNo++;
}

您可以在此处查看此操作:http://codepad.org/4igoDzWN