2009-05-19 6 views
1

Ich habe ein Programm, das eine XML-Datei mit den DOM-Funktionen lautet:PHP DOM-Funktionen lesen Zeilennummer von Eingabedatei

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

Als ich die Knoten in diesem Dokument durchlaufen, ist es eine Möglichkeit, die Linie zu sagen, der Eingabedatei, auf der der Knoten definiert wurde?

Zum Beispiel:

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

und die PHP:

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

Antwort

2

$element->getLineNo() gibt die Zeilennummer des öffnenden Tags zurück. Hinweis: Zum Öffnen von Tags, die mehr als eine Zeile umfassen, wird das Ende des öffnenden Tags zurückgegeben. Es scheint jedoch nicht für DOMText-Knoten zu funktionieren (gibt 0 zurück).

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

+0

Ausgezeichnet! Beachten Sie, dass dies nur für PHP 5.3.0+ gilt. – nickf

1

Sie können nicht wirklich tun dies mit PHP DOM-Klasse. DOM Level 3 added support for this, aber wir haben noch keine Unterstützung für DOM Level 3 in PHP.