首页 >后端开发 >php教程 >如何在 PHP 中使用 SimpleXML 访问带连字符的 XML 节点名称?

如何在 PHP 中使用 SimpleXML 访问带连字符的 XML 节点名称?

Patricia Arquette
Patricia Arquette原创
2024-12-14 04:52:10944浏览

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