이 코드는 큰 XML 파일을 구문 분석 할 때 비효율적 인 결과를 산출합니다. 이 같은 모습을 구문 분석php domdocument가 올바르게 구문 분석되지 않습니다.
XML은 : 약 3있을 때
<product>
<ItemId>1576829</ItemId>
<modelNumber>CX501</modelNumber>
<categoryPath><category><name>Buy</name></category>
<category><name>Car, Marine & GPS</name></category>
<category><name>Car Audio</name></category>
<category><name>Car Stereos</name></category>
<category><name>CD Decks</name></category></categoryPath>
</product>
(그래서 기본적으로 위의 XML을 100 배) 제품의 약 100 세트를이 코드는 작동
있다 5 세트 제품,하지만 증가하지 않을 때 크기. 더 큰 파일에는 왜 작동하지 않습니까? 이 코드가 실행 된 후, XML 파일은 각 제품에 대해 다음과 같이 가정한다
는<?php
set_time_limit(0);
// load up your XML
$xml = new DOMDocument;
$xml->load('file.xml');
// Array to store them
$append = array();
foreach ($xml->getElementsByTagName('product') as $product)
{
foreach($product->getElementsByTagName('name') as $name) {
// Stick $name onto the array
$append[] = $name;
}
// Now append all of them to product
foreach ($append as $a)
{
$product->appendChild($a);
}
$product->removeChild($xml->getElementsByTagName('categoryPath')->item(0));
}
// final result:
$result = $xml->saveXML();
echo $result;
$file = "new_file.xml";
file_put_contents($file,$result);
?>
, 그러나
<?xml version='1.0'?>
<products>
<product>
<ItemId>531670</ItemId>
<modelNumber>METRA ELECTRONICS/MOBILE AUDIO</modelNumber>
<name>Buy</name></category>
<name>Car, Marine & GPS</name>
<name>Car Installation Parts</name>
<name>Deck Installation Parts</name>
<name>Antennas & Adapters</name>
</product>
</products>
을 설정 난 (오히려 큰 XML 파일을 구문 분석 한이 PHP 코드를 사용하는 경우 100 세트의 제품), categoriesPath 노드와 해당 하위 노드를 가져 와서 파일의 맨 아래에 추가합니다 (제품) 작은 XML 파일 (3 제품 세트), 원하는 결과를 얻을 것입니다 (위의 XML 코드는이 PHP 코드가 수행해야하는 작업이지만, 큰 파일).
나는 100 제품이있는 XML 파일을 구문 분석하려고
는 결과는 다음과 같습니다 설정 : 이름 노드의 각 제품 노드 내부에 추가되지 않습니다<?xml version='1.0'?>
<products>
<product>
<ItemId>531670</ItemId>
<modelNumber>METRA ELECTRONICS/MOBILE AUDIO</modelNumber>
</product>
</products>
<name>Buy</name></category>
<name>Car, Marine & GPS</name>
<name>Car Installation Parts</name>
<name>Deck Installation Parts</name>
<name>Antennas & Adapters</name>
.
"작동하지 않습니다"는 정확히 의미할까요? 무슨 일이야? 어떤 오류가 나옵니까? –
"비효율적 인 결과"란 무엇입니까? file_put_contents를 사용하여 파일을 쓰는 이유는 무엇입니까? 그리고 어쨌든 위의 코드는 무엇입니까? – Gordon
답변을 업데이트했습니다. 이 코드는 변환 된 XML을 사용하여 새 파일을 작성합니다. – Ben