具有连字符名称的 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中文网其他相关文章!