저는 지금 당장 가지고있는 XML 파일의 내용에 따라 새로운 XML 파일을 작성하는 코드를 작성했습니다. 내가 읽는 XML 파일에는 3 ~ 4 개의 노드가있는 14 개의 조각이 있습니다.이 경우에는 각각 7 개의 새 XML 파일이 있어야합니다. 각 파일에는 첫 번째 파일의 2 개 조각이 들어 있습니다. 쓰기 후에 모든 xml 파일에는 각각 2 개의 조각이 있어야하며, 모든 파일을 결합 할 때 14 개의 조각으로 합계됩니다.PHP에서 XML 파일 작성시 문제가 발생했습니다
그러나 코드가 나에게 다음과 같은 올바른 출력
을 부여되지는 다음 코드
<?php
$docOutput = new DOMDocument("1.0");
$root = $docOutput ->createElement("data");
$docOutput ->appendChild($root);
if(!$xml=simplexml_load_file('xmlfile.xml')){
trigger_error('Error reading XML file',E_USER_ERROR);
}
$array1=array();
$x=0;
foreach($xml as $syn)
{
for($i=$x*2;$i<($x+1)*2;$i++)
{
//$array1[] = $syn->productId;
echo $i;
echo "<br />";
echo $syn->productId;
$id = $docOutput ->createElement("PID");
$idText = $docOutput ->createTextNode($syn->productId);
$id->appendChild($idText);
$title = $docOutput ->createElement("PNAME");
$titleText = $docOutput ->createTextNode($syn->productname);
$title->appendChild($titleText);
$book = $docOutput ->createElement("Product");
$book->appendChild($id);
$book->appendChild($title);
$root->appendChild($book);
}
$docOutput ->formatOutput = true;
echo "<xmp>". $docOutput ->saveXML() ."</xmp>";
$docOutput ->save("mybooks$x.xml") or die("Error");
$x++;
}
//echo count($array1, COUNT_RECURSIVE);
?>
입니다
<?xml version="1.0"?>
<data>
<Product>
<PID>SGLDN7XJ2FPZH8G8</PID>
<PNAME>Miami Blues Aviator Sunglasses</PNAME>
</Product>
</data>
을 읽는 메신저 파일의 한 조각, 14 제품이되어있다 내가 읽는 im.Read에서 파일에 조각을 각각 두 조각으로 7 파일을 얻어야한다.
코드
당신은 무엇을 추가 할 수 이것은 SimpleXMLIterator와 함께 작동 귀하의 코드는 현재 반환합니까? –
14 개의 새 파일로 반환되지만 각 파일의 제품 조각이 2 씩 증가합니다. 첫 번째 파일에는 2 개의 조각이 있고 두 번째 조각에는 4 개가 있으므로 마지막 조각과 마지막 조각에는 28 개의 조각이 있습니다. 잘못된 조각입니다. 모든 파일은 2 개의 단편으로 만 구성되어야합니다. – user3843585
문제점은 내부 루프'for ($ i = $ x * 2; $ i <($ x + 1) * 2; $ i ++)'입니다. 당신이 출력물에서 볼 수있는 것과 똑같이 할 수 있습니다. 하나의 루프를 사용하는 것이 더 쉽습니다. 여기서는 바깥 쪽 foreach입니다. 정확히 내 대답을 참조하십시오. – hakre