CakeFest 2017 NYC, the Official CakePHP Conference


(PHP 5 >= 5.3.0, PHP 7)

DOMNode::getLineNoLit le numéro de ligne d'un noeud


public int DOMNode::getLineNo ( void )

Lit le numéro de ligne d'un noeud.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne le numéro de ligne de définition du noeud.


Exemple #1 Exemple avec DOMNode::getLineNo()

// XML de l'exemple
$xml = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
    <node />

// Création d'un objet DOMDocument
$dom = new DOMDocument;

// Chargement du XML

// Affichage du numéro de ligne du noeud.
printf('Le noeud <node> est défini à la ligne %d'$dom->getElementsByTagName('node')->item(0)->getLineNo());

L'exemple ci-dessus va afficher :

Le noeud <node> est défini à la ligne 3

add a note add a note

User Contributed Notes 3 notes

ruud at vanmelick dot com
3 years ago
The 65535 line number limit is no longer a problem when you use libxml 2.9 or higher, but you have to explicitly enable support for big line numbers:

('XML_PARSE_BIG_LINES', 4194304);
$dom = new DOMDocument;
$dom->loadXML($xml, XML_PARSE_BIG_LINES);
4 years ago
The DOMNode::getLineNo() method doesn't work properly due to a libxml2 bug.
luke dot NOREPLY at webconnex dot com
5 years ago
This function is buggy. It doesn't always return the correct line number, especially for text elements. As an alternative you can do something like this:

= $node->ownerDocument->saveXML($node);
$line += substr_count($text, "\n");

You'll want to keep a reference to $line (starting at 0) and add to it as you parse over the document recursively.

In order for this to work you have to tell DOMDocument to preserve white space before loading the document.
To Top