2009-05-19 32 views
1

我有一个程序使用DOM功能,用于读取XML文件:PHP DOM函数从输入文件中读取一行数

$doc = new DOMDocument('1.0'); 
$doc->load("myFile.xml"); 

正如我遍历节点在本文档中,有一种方法来告诉哪个线输入文件的节点是在什么地方定义的?

例如:

1: <!-- myFile.xml --> 
2: <foobar> 
3:  <foo>FOO</foo> 
4:  <bar>BAR</bar> 
5: </foobar> 

和PHP:

$xp = new DOMXPath($doc); 
$bars = $xp->query("//bar"); 
$myBar = $bars[0]; 
echo "The first <bar> element is on line " . performMagicHere(); // 4 

回答

2

$element->getLineNo()将返回开始标签的行号。注意:对于打开跨越多行的标签,它将返回开始标签的末尾。它似乎不适用于DOMText节点(返回0)。

http://us3.php.net/manual/en/domnode.getlineno.php

+0

非常好!请注意,这仅适用于PHP 5.3.0+。 – nickf 2010-03-25 00:20:57

1

你不能真正做到这一点用PHP的DOM类。 DOM级别3 added support for this,但我们尚未在PHP中使用DOM级别3支持。