首頁 >後端開發 >php教程 >如何在 PHP 中使用 SimpleXML 存取帶連字符的 XML 節點名稱?

如何在 PHP 中使用 SimpleXML 存取帶連字符的 XML 節點名稱?

Patricia Arquette
Patricia Arquette原創
2024-12-14 04:52:10945瀏覽

How to Access Hyphenated XML Node Names Using SimpleXML in PHP?

使用SimpleXML 讀取帶有連字符名稱的XML 節點

在PHP 中,當您遇到以下元素時,使用SimpleXML從XML 文件中提取資料變得具有挑戰性帶連字符的名稱。讓我們深入研究這個問題並找到解決方案。

考慮以下XML:

<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
  <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" office:version="1.1">
    <office:meta>
      <dc:creator>Mark Baker</dc:creator>
      <dc:date>2010-09-01T22:49:33Z</dc:date>
      <meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date>
      <meta:editing-cycles>4</meta:editing-cycles>
      <meta:editing-duration>PT00H04M20S</meta:editing-duration>
      <meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator>
    </office:meta>
  </office:document-meta>
</gnm:Workbook>

要讀取document-meta 元素及其子元素,請考慮下列初始程式碼:

$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
var_dump($officeXML);

echo '<hr />';

此程式碼轉儲office 元素,其中包括document-meta。但是,嘗試使用 $officeXML->document-meta 直接存取 document-meta 會失敗並傳回 int 0。

此行為的原因在於 SimpleXML 對連字號名稱的處理。預設情況下,它將連字符元素名稱轉換為駝峰命名法。在這種情況下,「document-meta」變成「documentMeta」。要存取此元素,請使用以下語法:

$docMeta = $officeXML->{'document-meta'};
var_dump($docMeta);

透過使用大括號和字串表示法,您可以存取實際的元素名稱,而無需 SimpleXML 的預設大小寫轉換。這將成功轉儲 document-meta 元素。

注意: 此語法僅適用於元素節點。 @attributes 中的屬性節點可以使用數組表示法直接訪問,無論它們的連字符如何。

以上是如何在 PHP 中使用 SimpleXML 存取帶連字符的 XML 節點名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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