(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DOMNode::getLineNoObtém o número da linha para um nó


public DOMNode::getLineNo(): int

Obtém o número da linha onde o nó foi definido durante o tempo de análise.


Esta função não possui parâmetros.

Valor Retornado

Retorna o número da linha onde o nó foi definido durante o tempo de análise. Se o nó foi criado manualmente, o valor retornado será 0.


Exemplo #1 DOMNode::getLineNo() exemplo

// Dump XML para o exemplo abaixo
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<node />

// Crie uma nova instância de DOMDocument
$dom = new DOMDocument;

// Load the XML

// Imprima a linha onde o elemento 'node' foi definido
printf('The <node> tag is defined on line %d', $dom->getElementsByTagName('node')->item(0)->getLineNo());

O exemplo acima produzirá:

The <node> tag is defined in line 3

add a note

User Contributed Notes 3 notes

ruud at vanmelick dot com
10 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);
luke dot NOREPLY at webconnex dot com
13 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.
12 years ago
The DOMNode::getLineNo() method doesn't work properly due to a libxml2 bug.
To Top