首頁 >後端開發 >php教程 >如何使用SimpleXML正確存取XML命名空間?

如何使用SimpleXML正確存取XML命名空間?

DDD
DDD原創
2024-12-28 21:56:19619瀏覽

How Do I Access XML Namespaces Correctly Using SimpleXML?

存取SimpleXML 中的XML 命名空間

XML 命名空間是一種將多個XML 格式合併到單一文件中同時保留其各自來源的方法。 XML 命名空間由冒號分隔的一對定義,其中包含指示本機命名空間的前綴和標識命名空間的統一資源識別碼 (URI)。

為什麼問題中的程式碼不起作用?

存取範例中的命名空間元素(即 ->ns2:item)的初始嘗試失敗,因為 SimpleXML 期望使用children()和attributes()方法定義命名空間。

存取SimpleXML 中的命名空間

SimpleXML 提供了兩種處理命名空間的方法:

  • 選擇特定命名空間中的元素。它有效地將物件的焦點更改為該名稱空間,直到透過另一個children()呼叫切換回來。
  • attributes()方法:與children()類似,但用於存取指定範圍內的屬性命名空間。

使用命名空間的程式碼處理

這是程式碼的修正版本:

define('XMLNS_EG1', 'http://example.com');
define('XMLNS_EG2', 'https://namespaces.example.org/two');
define('XMLNS_SEQ', 'urn:example:sequences');

foreach ($sx->children(XMLNS_EG1)->list->children(XMLNS_EG2)->item as $item) {
    echo 'Position: ' . $item->attributes(XMLNS_SEQ)->position . "\n";
    echo 'Item: ' . (string)$item . "\n";
}
或者,您可以在使用simplex_load_string9_load等函數的$namespace_or_prefix 參數載入文件時指定初始命名空間。

注意:建議使用完整的命名空間 URI 而不是前綴,因為前綴可能會更改,可能會破壞您的程式碼。

以上是如何使用SimpleXML正確存取XML命名空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn