The DOMNode::getLineNo() method doesn't work properly due to a libxml2 bug.
https://bugzilla.gnome.org/show_bug.cgi?id=676026
DOMNode::getLineNo
(PHP 5 >= 5.3.0)
DOMNode::getLineNo — Get line number for a node
Descrição
public int DOMNode::getLineNo
( void
)
Gets line number for where the node is defined.
Parâmetros
Esta função não contém parâmetros.
Valor Retornado
Always returns the line number where the node was defined in.
Exemplos
Exemplo #1 DOMNode::getLineNo() example
<?php
// XML dump for below example
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<node />
</root>
XML;
// Create a new DOMDocument instance
$dom = new DOMDocument;
// Load the XML
$dom->loadXML($xml);
// Print where the line where the 'node' element was defined in
printf('The <node> tag is defined on line %d', $dom->getElementsByTagName('node')->item(0)->getLineNo());
?>
O exemplo acima irá imprimir:
The <node> tag is defined in line 3
Anonymous
19-May-2012 02:21
luke dot NOREPLY at webconnex dot com
04-Mar-2011 06:28
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:
<?php
$text = $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.
