function loadFilesToArrays(){
$notpromo1Array = simplexml_load_file('pages/hegnar/source/1/notpromo-1_08_04_2013_1.xml');
foreach($notpromo1Array as $xml){
echo $xml -> getName();
echo "<br>";
echo $xml -> ORDREHODE -> SluttkundeNr;
echo "<br>";
}
}
我的XML看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<IS_DATA>
<ORDRER class="linked-list">
<ORDREHODE>
<ORDREKUNDENR>10541</ORDREKUNDENR>
<SluttkundeNr>1240</SluttkundeNr>
<AND OTHER PROPERTIES></AND OTHER PROPERTIES>..........
</ORDREHODE>
<ORDREHODE>
<ORDREKUNDENR>10541</ORDREKUNDENR>
<SluttkundeNr>1344</SluttkundeNr>
<AND OTHER PROPERTIES></AND OTHER PROPERTIES>..........
</ORDREHODE>
<ORDREHODE>
ETC ETC ETC ..................
</ORDREHODE>
</ORDRER>
</IS_DATA>
XML正确结束等,我使用了notepad ++的xml验证器。
我不明白为什么当我调用loadFilesToArray函数时,我收到此错误注意:尝试在第104行的/path/to/file/page1.php中获取非对象的属性 IS_DATA毕竟用大括号和单引号括起来,因为我看到很多人在想要回显XML中的属性名称中具有特殊字符的XML数据时所指的。
答案 0 :(得分:1)
请立即在同一文件夹
中提供xml文件的正确路径a.xml和test.php<强> A.XML 强>
<?xml version="1.0" encoding="UTF-8"?>
<IS_DATA>
<ORDRER class="linked-list">
<ORDREHODE>
<ORDREKUNDENR>10541</ORDREKUNDENR>
<SluttkundeNr>1240</SluttkundeNr>
<ANDOTHERPROPERTIES></ANDOTHERPROPERTIES>
</ORDREHODE>
<ORDREHODE>
<ORDREKUNDENR>10541</ORDREKUNDENR>
<SluttkundeNr>1344</SluttkundeNr>
<ANDOTHERPROPERTIES></ANDOTHERPROPERTIES>
</ORDREHODE>
<ORDREHODE>
ETC ETC ETC ..................
</ORDREHODE>
</ORDRER>
</IS_DATA>
<强> test.php的强>
<?php
$notpromo1Array = simplexml_load_file("a.xml");
foreach($notpromo1Array as $xml)
{
foreach($xml as $child)
{
echo $child->getName();
echo "<br>";
echo $child->SluttkundeNr;
echo "<br>";
}
}
/*RESULT
* ORDREHODE
1240
ORDREHODE
1344
ORDREHODE
*/
?>
答案 1 :(得分:1)
您需要调试代码:
foreach ($notpromo1Array as $xml)
{
echo $xml->getName(), "\n";
}
这将为您提供$xml
所代表的元素的名称:
ORDRER
由于此元素没有任何<IS_DATA>
子元素,simplexml会为您提供NULL
。然后你访问->ORDRER
上的NULL
,因为它不是一个对象而无效:
注意:尝试获取非对象的属性
这很简单。只需访问正确的元素,你就可以了:
foreach ($notpromo1Array as $xml)
{
echo $xml->getName(), "\n";
echo $xml->ORDREHODE->SluttkundeNr, "\n";
}
输出:
ORDRER
1240
答案 2 :(得分:0)
刚做了一个快速测试,这就是我想出来的。替换此 foreach 代码:
foreach($notpromo1Array as $xml){
echo $xml->ORDREHODE->SluttkundeNr;
echo "<br />";
}
仅供参考,我使用以下XML文件作为示例,它打印了1240:
<?xml version="1.0" encoding="UTF-8"?>
<IS_DATA>
<ORDRER class="linked-list">
<ORDREHODE>
<ORDREKUNDENR>10541</ORDREKUNDENR>
<SluttkundeNr>1240</SluttkundeNr>
</ORDREHODE>
</ORDRER>
</IS_DATA>