具有連字符名稱的SimpleXML 讀取節點
在XML 中,可以在節點名稱中使用連字符以提高可讀性。但是,當使用 SimpleXML 解析 XML 文件時,這些連字符名稱可能會帶來挑戰。
問題
當嘗試使用 SimpleXML 存取具有連字符名稱的節點時,使用者可能會遇到錯誤或不正確的結果。例如,使用以下XML:
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" ...> <office:document-meta ...> ... </office:document-meta> </gnm:Workbook>
嘗試使用標準語法存取「文檔元」節點:
$docMeta = $officeXML->document-meta;
會導致錯誤或不正確的整數值.
解決方案
正確存取節點SimpleXML中的連字符名稱,將節點名稱括在大括號中:
$docMeta = $officeXML->{'document-meta'};
此語法指示 SimpleXML 將連字符名稱視為字串,並按其特定名稱查找節點。
屬性存取
請注意,此花括號語法僅在存取時才需要元素節點。可以使用標準陣列表示法存取具有連字符名稱的屬性:
$attribute = $node['hyphenated-attribute'];
替代方法
如果不首選花括號語法,則可以使用另一種方法以下表示法:
$docMeta = $officeXML->{'office:document-meta'};
此明確名稱空間聲明可確保SimpleXML搜尋
結論
透過使用大括號或明確命名空間聲明,使用者可以使用 SimpleXML 成功讀取 XML 文件中帶有連字符名稱的節點。
以上是如何存取 SimpleXML 中連字符的節點名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!