Ben Archive.org 'ın arama işlevselliği verilerini ayrıştırmak çalışıyorum. Veriler bu gibi görünüyor:
<doc>
<float name="avg_rating">5.0</float>
<arr name="collection"><str>U-Melt</str><str>etree</str></arr>
<arr name="format"><str>Checksums</str><str>Flac</str><str>Flac FingerPrint</str>
<str>Metadata</str><str>Ogg Vorbis</str><str>Text</str><str>VBR M3U</str>
<str>VBR MP3</str><str>VBR ZIP</str></arr>
<str name="identifier">umelt2009-09-19.main.km184.flac16</str>
<str name="mediatype">etree</str>
<int name="num_reviews">1</int>
</doc>
İşte link to the full XML bulunuyor.
PHP'nin SimpleXML her doc alma cezası alır ve str etiketli öğeleri okuyabilir ve sadece iyi arr olabilir. Bu şamandıra, int ya da dışarı ucube uzun etiketli öğeleri, ve ben neden bilemiyorum.
Şöyle Benim ayrıştırma kodu:
/* OPENING FILE */
$xml = simplexml_load_file($pathname.$identifier_list);
//Check the file to make sure it's got XML in it
$xmlCheck = file_get_contents($pathname.$identifier_list);
$xmlCheck = substr($xmlCheck,0,4);
if (!$xmlCheck == "<?xm") {
die("<p>WARNING: ".$filename." doesn't looks like XML, quitting. Check it to see what's wrong.");
}
else {
$result = $xml->result;
echo "<br/><br/>".$result['name']."<br/>";
$counter = 1;
foreach ($result->doc as $doc) {
echo "<br/><b>Document ".$counter."</b>";
$counter++;
foreach ($doc->children() as $item) {
echo $item->getName();
switch ((string) $item['name']) {
case 'identifier':
echo "<br/>Identifier: ".$item."\n";
break;
case 'licenseurl':
echo "<br/>License URL: ".$item."\n";
break;
case 'mediatype':
echo "<br/>Mediatype: ".$item."\n";
break;
case 'downloads':
echo "<br/>Downloads: ".$item."\n";
break;
case 'avg_rating':
echo "<br/>Average Rating: ".$item."\n";
break;
case 'collection':
echo "<br/>Collection: ".$item."\n";
break;
}
}
echo "<br/>";
}
}
> Doktor ve - - ()> çocuklar - Ben kullanarak denedim> uzun ya da -> int. Bunların hiçbiri uzun / int / float öğeleri almak gibi görünüyor. Ben onlar ilkel çünkü bu olduğunu düşünmeye başlıyorum, ama ben bu sorunu nasıl düzeltebilirim bilmiyorum.
Yardımlarınız için şimdiden teşekkür ederiz.