예를 들어 XML 파일에 수백 만 개의 "item"요소가있는 경우 1 ~ 100 "item"요소를 건너 뛸 수 있고 "item"요소 번호 101에서 읽으시겠습니까?PHP XMLReader가 특정 노드 요소 번호에서 읽기 시작
XML 예제 :
<items>
<item>
<name>ABC</name>
<price currency='USD'>100</price>
</item>
<item>
<name>DEF</name>
<price currency='USD'>120</price>
</item>
<!-- .... and a lot more item elements -->
</items>
여기
내 현재 코드입니다 : 당신이 위에서 볼 수
$z = new XMLReader;
$z->open('1.xml');
$doc = new DOMDocument;
while ($z->read() && $z->name !== 'item');
$i = 1;
while ($z->name === 'item'){
if($i<=100){
$z->next('item');
}else{
$node = new SimpleXMLElement($z->readOuterXML());
//doing my stuff here, extracting the node information of that <item>
$z->next('item');
}
$i++;
}
, 난 그냥 항목 번호 1-100을 건너 뛸 "다음"사용하지만,이 매우 효율적이지 않습니다. 여러분이 도와 주시면 감사하겠습니다. 감사!!
시도 @DHRUV 굽타의 솔루션 : 오류 : "메모리 오류에서 파서 오류"
$xml=simplexml_load_file('1.xml',"SimpleXMLElement", LIBXML_COMPACT | LIBXML_PARSEHUGE);
$xml = json_encode($xml);
$xml = json_decode($xml,true);
for($i=99; $i<=104; $i++){
echo $xml["item"][$i]["name"]."<br />";
}
하지만 얻었다.
대신 1 100를 건너에서
증가 PHP 메모리 제한 노드를 사용하여 XML을 읽어보십시오. – Hkachhia
@Hkachhia 당신은 더 설명 할 수 있습니까? –
문제는 실제로 데이터를 읽지 않으면 각 요소의 크기를 알 수 없다는 것입니다. –