访问 SimpleXML 中的 XML 命名空间
XML 命名空间是一种将多个 XML 格式合并到单个文档中同时保留其各自来源的方法。 XML 命名空间由冒号分隔的一对定义,其中包含指示本地命名空间的前缀和标识命名空间的统一资源标识符 (URI)。
为什么问题中的代码不起作用?
访问示例中的命名空间元素(即 ->ns2:item)的初始尝试失败,因为 SimpleXML 期望使用children()和attributes()方法定义命名空间。
访问 SimpleXML 中的命名空间
SimpleXML 提供了两种处理命名空间的方法:
使用命名空间的代码处理
这是代码的更正版本:
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"; }
或者,您可以在使用 simplexml_load_string 等函数的 $namespace_or_prefix 参数加载文档时指定初始命名空间。
注意:建议使用完整的命名空间 URI 而不是前缀,因为前缀可能会更改,可能会破坏您的代码。
以上是如何使用SimpleXML正确访问XML命名空间?的详细内容。更多信息请关注PHP中文网其他相关文章!