PHP Conference Japan 2024

DOMNode::getLineNo

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

DOMNode::getLineNo获取节点的行号

描述

public DOMNode::getLineNo(): int

获取节点在解析时定义的行号。

参数

此函数没有参数。

返回值

返回节点在解析时定义的行号。如果节点是手动创建的,则返回值将为0

示例

示例 #1 DOMNode::getLineNo() 示例

<?php
// 下面示例的XML转储
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<node />
</root>
XML;

// 创建一个新的DOMDocument实例
$dom = new DOMDocument;

// 加载XML
$dom->loadXML($xml);

// 打印'node'元素定义的行号
printf('The <node> tag is defined on line %d', $dom->getElementsByTagName('node')->item(0)->getLineNo());
?>

以上示例将输出

The <node> tag is defined in line 3

添加备注

用户贡献的笔记 3 条笔记

ruud at vanmelick dot com
11 年前
当您使用libxml 2.9或更高版本时,65535行号限制不再是问题,但您必须显式启用对大行号的支持

<?php
define
('XML_PARSE_BIG_LINES', 4194304);
$dom = new DOMDocument;
$dom->loadXML($xml, XML_PARSE_BIG_LINES);
?>
luke dot NOREPLY at webconnex dot com
13 年前
此函数有错误。它并不总是返回正确的行号,尤其是在文本元素中。您可以尝试以下方法:

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

您需要保留对 $line 的引用(从 0 开始),并在递归解析文档时对其进行添加。

为了使此方法有效,您必须在加载文档之前告诉 DOMDocument 保留空格。
匿名
12 年前
由于libxml2错误,DOMNode::getLineNo()方法无法正常工作。

https://bugzilla.gnome.org/show_bug.cgi?id=676026
To Top