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('<node> 標籤定義在第 %d 行', $dom->getElementsByTagName('node')->item(0)->getLineNo());
?>

以上範例將輸出:

The <node> tag is defined in line 3

新增註解

使用者貢獻的註解 3 則註解

4
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);
?>
1
luke dot NOREPLY at webconnex dot com
13 年前
這個函式有錯誤。它並不總是返回正確的行號,尤其是對於文字元素。您可以改用以下方法

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

您需要保留對 $line 的參考(從 0 開始),並在遞迴地解析文件時將其添加到其中。

為了使其正常運作,您必須在載入文件之前告知 DOMDocument 保留空白。
0
匿名
12 年前
由於 libxml2 錯誤,DOMNode::getLineNo() 方法無法正常運作。

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