gpt4 book ai didi

php simplexml_load_file - 无法在 print_r 中看到

转载 作者:数据小太阳 更新时间:2023-10-29 02:49:46 26 4
gpt4 key购买 nike

我是 PHP 中 simplexml 解析器 的新手。我已经运行了我发现的示例,并且它们按广告宣传的那样工作。虽然我无法让它与我的程序一起工作。我在这里搜索了几个小时。

我有一个名为 core.xml 的 XML 文件(注意节点标签中有冒号):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<dc:title>Lecture 3</dc:title>
<dc:creator>John Brown &amp; Greg Smith</dc:creator>
<cp:lastModifiedBy>Greg Smith</cp:lastModifiedBy>
<cp:revision>165</cp:revision>
<dcterms:created xsi:type="dcterms:W3CDTF">2010-02-19T04:37:55Z</dcterms:created>
<dcterms:modified xsi:type="dcterms:W3CDTF">2014-01-30T02:41:30Z</dcterms:modified>

</cp:coreProperties>

我使用以下代码将其加载到解析器中:

if (file_exists('core.xml')){

echo 'file exists <br>';
$xml_core = simplexml_load_file('core.xml');

print_r($xml_core);
}
else
{
exit('Failed to open core.xml.');
}

文件存在,但我在 print_r 得到的是:

file exists    
SimpleXMLElement Object ( )

如何访问节点?我必须使用的其他 XML 文件有很多层次。

谢谢

最佳答案

您在问题中描述的错误模式实际上是正确的行为,而不是错误。

如果您在 SimpleXMLElement 上使用 print_r(或 var_dump),它只会向您显示一些基本信息 关于该对象,不是 XML 文档的全部内容

要查看整个 XML,请改用 the asXML() method。或者,要获取调试信息,您可以使用专门了解如何调试 SimpleXMLElement 内容的库,例如 simplexml_debug 编写的 IMSop

在您的特定情况下,该对象显示为空(无对象成员),因为在默认命名空间(请参阅:Namespaces in XML 1.0)中的 XML 文档中没有任何节点 - 在 more or less complex rules of SimpleXMLElement to array transitions were applied 之后 - 将从对象传递然后显示 print_rvar_dump 函数的内部调试处理程序。所以只给出了类名,这样你就可以看到它是某个类的对象——并且没有成员:

SimpleXMLElement Object ( ) 
^ ^ ^
object type | `------ object fields (empty)
|
variable type

如何处理?非常简单:了解 XML(您已经知道)并从中获取记录的数据:

由于您的 XML 元素名称包含冒号,您应该知道这些被称为 XML namespaces 。正如您在 print_r 输出中看到的差异一样,您还将看到在访问该 namespace 内的子元素方面的差异。您必须使用 children() method 并指定您想要获取其子元素的命名空间。如果您使用 xpath() 方法访问元素,您需要先注册一个命名空间前缀,然后再在调用该方法的 SimpleXMLElement 上使用它。

现场有一些精选的 SimpleXML 和 XML 命名空间相关问答 Material :

您也可以从 PHP 手册中获取此信息,只需查看 SimpleXMLElement API documentation 中的命名空间相关信息即可。

关于php simplexml_load_file - 无法在 print_r 中看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com