2009-05-19 7 views
1

J'ai un programme qui lit un fichier XML à l'aide des fonctions DOM:numéro de ligne de lecture fonctions PHP DOM à partir du fichier d'entrée

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

Comme je traverse les noeuds dans ce document, est-il un moyen de dire quelle ligne du fichier d'entrée sur lequel le noeud a été défini?

Par exemple:

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

et PHP:

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

Répondre

2

$element->getLineNo() retournera le numéro de ligne de l'étiquette d'ouverture. Remarque: pour les balises d'ouverture qui couvrent plus d'une ligne, elle renvoie la fin de l'étiquette d'ouverture. Il ne semble pas fonctionner pour les nœuds DOMText (retourne 0).

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

+0

Excellent! Notez que ceci est pour PHP 5.3.0+ seulement. – nickf

1

Vous ne pouvez pas vraiment faire avec la classe DOM de PHP. DOM Niveau 3 added support for this, mais nous n'avons pas encore le support DOM niveau 3 en PHP.

Questions connexes