XML数据解析
问题描述:
示例XML:XML数据解析
<liste>
<okul>kod="1" durumid="6" genelid="11702" adi="istanbul lisesi"/>
<puan>genelpuan"2" sosyalpuan="0" matpuan="3"/>
<okul>kod="6" durumid="8" genelid="11345" adi="ankara lisesi"/>
<puan>genelpuan"4" sosyalpuan="5" matpuan="2"/>
</liste>
我想要的结果:
genelid-adi-genelpuan-sosyalpuan
sample
11702 - istanbul lisesi - 2 - 0
11345 - ankara lisesi - 4 - 5
我的代码:
function getirbilgileri{
$ch = curl("http://www.sample.com");
$xml = simplexml_load_string($ch);
$tarih = (string)$xml->attributes()->saat;
$i = 0;
$ids = cols(get('biten'),'genelid');
foreach($xml->Okul as $okul) {
$x = getarray($okul->attributes())+compact('tarih');
$puanlar[$i++] = (string)$x['genelid'];
if (in_array($x['genelid'],$ids)) continue;
insert('biten',parsequery($));
}
$i = 0;
foreach($xml->puan as $puan) {
$x = parsequery($puan->attributes());
$i++;
if (in_array($x['genelid'],$ids)) continue;
update('biten',$x,"genelid='{$puan[$i-1]}'",1);
}
}
的问题是在该行:
if (in_array($x['genelid'],$ids)) continue;
因为genelid
不在数组中。有任何想法吗?
foreach($biten as $bitenler)
{
echo '
<div class="okullar left">'.$bitenler->adi.'</div> // **this is ok**
<div class="puanlar fpuan">'.$bitenler->sosyalpuan.'</div>'; // **this is incorrect**
}
答
你的XML应该像
<liste>
<okul kod="1" durumid="6" genelid="11702" adi="istanbul lisesi"/>
<puan genelpuan"2" sosyalpuan="0" matpuan="3"/>
<okul kod="6" durumid="8" genelid="11345" adi="ankara lisesi"/>
<puan genelpuan"4" sosyalpuan="5" matpuan="2"/>
</liste>
可能。
如果你想访问okul和puan节点的内容,处理你拥有的xml是毫无意义的。
您的XML语法无效。 –
'$ ch'实际上是返回的内容,还是卷曲句柄?转换前打印出来。你还应该缩进你的代码。 – mario
xml只是样本 您可以看到XML的结构 – mrsilver