Archive.org의 검색 기능에서 데이터를 구문 분석하려고합니다. 데이터는 다음과 같습니다.항목 이름이 PHP와 SimpleXML 인 XML 구문 분석 <long>, <float> 또는 <int>
<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>
여기는 link to the full XML입니다.
PHP의 SimpleXML은 각 문서를 올바르게 가져 와서 str 및 arr이라는 레이블이 붙은 항목을 읽을 수 있습니다. float, int 또는 long이라는 라벨이 붙어있는 항목이며, 그 이유는 알 수 없습니다. 다음과 같이
내 파싱 코드입니다 : 내가 사용 해봤
/* 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/>";
}
}
-> 어린이() -> 문서 및 -> 길거나 -> INT. 이들 중 어느 것도 long/int/float 항목을 선택하지 않는 것 같습니다. 나는 그들이 프리미티브이기 때문에 그것이라고 생각하기 시작했다. 그러나 나는이 이슈를 고치는 방법을 모른다.
미리 도움을 주셔서 감사합니다.
네임 스페이스가 관련되어 있습니까? 전체 xml을 게시 할 수 있습니까? –
전체 XML에 링크가 추가되었습니다. –