如何修复PHP注意事项:“;试图获取“中非对象的属性”;(解析XML)
我正在用PHP解析XML中的数据。我想显示它,但我收到通知:“试图在中获取非对象的属性”。它也不显示数据 我的PHP文件:如何修复PHP注意事项:“;试图获取“中非对象的属性”;(解析XML),php,xml,Php,Xml,我正在用PHP解析XML中的数据。我想显示它,但我收到通知:“试图在中获取非对象的属性”。它也不显示数据 我的PHP文件: <?php $xml = simplexml_load_file('file.xml'); for($i = 0; $i < 3; $i++) { $result = $xml->tittle->topic[$i]->name; } echo $result; ?> title是根元素,它将直接在$xml中找到,因此您可
<?php
$xml = simplexml_load_file('file.xml');
for($i = 0; $i < 3; $i++)
{
$result = $xml->tittle->topic[$i]->name;
}
echo $result;
?>
title
是根元素,它将直接在$xml
中找到,因此您可以使用$xml->topic
而不是$xml->title->topic
<?php
$xml = simplexml_load_file('xml.xml');
foreach ($xml->topic as $topic)
{
echo (string) $topic->name;
}
title
是根元素,它将直接在$xml
中找到,因此您可以使用$xml->topic
而不是$xml->title->topic
不管数组中有多少元素,都应该循环数组中的所有元素,而不是硬编码
结果如下所示:
<?php
$xml = simplexml_load_file('xml.xml');
foreach ($xml->topic as $topic)
{
echo (string) $topic->name;
}
您可以使用下面的代码修复错误,只需删除“title”
$xml=simplexml\u load\u文件('file.xml');
对于($i=0;$i<3;$i++)
{
$result=$xml->topic->name;
}
回声$结果;
您可以使用下面的代码修复错误,只需删除“title”
$xml=simplexml\u load\u文件('file.xml');
对于($i=0;$i<3;$i++)
{
$result=$xml->topic->name;
}
回声$结果;
正如我在comments中所写的那样,simplexml\u load\u file
返回的对象不包含根元素的属性。你需要把它从链子上删掉
还有几点意见:
- 循环会在每次迭代中覆盖
$result
,因此只会得到最后一个节点。您可能希望$result
成为一个数组
- 您需要将SimpleXml节点转换为字符串(如果需要字符串)
- 您希望有三个节点,但最好使其更具动态性,这样更改XML中的主题数量就不会破坏代码
下面是我建议如何编写循环的代码:
foreach($xml->topic as $topic) {
$result[] = (string) $topic->name;
}
现在,$result
将有[“PHP”、“JS”、“CSS”]
正如我在注释中所写的那样,simplexml\u load\u file
返回的对象不包括根元素的属性。你需要把它从链子上删掉
还有几点意见:
- 循环会在每次迭代中覆盖
$result
,因此只会得到最后一个节点。您可能希望$result
成为一个数组
- 您需要将SimpleXml节点转换为字符串(如果需要字符串)
- 您希望有三个节点,但最好使其更具动态性,这样更改XML中的主题数量就不会破坏代码
下面是我建议如何编写循环的代码:
foreach($xml->topic as $topic) {
$result[] = (string) $topic->name;
}
现在$result
将具有[“PHP”、“JS”、“CSS”]
XML的根元素不是属性,您应该跳过它并执行$result=$XML->topic[$i]->name代码>XML的根元素不是属性,您应该跳过它并执行$result=$XML->topic[$i]->name代码>
foreach($xml->topic as $topic) {
$result[] = (string) $topic->name;
}