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
10 年前
当您使用 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 年前
DOMNode::getLineNo() 方法由于 libxml2 错误而无法正常工作。

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