일부 요소가 있지만 정보가 다른 xml 파일이 있습니다.SimpleXML을 사용하여 여러 XML 파일을 하나의 CSV로 변환
먼저 파일 test.xml의
<?xml version="1.0" encoding="UTF-8"?>
<phones>
<phone>
<title>"Apple iPhone 5S"</title>
<price>
<regularprice>500</regularprice>
<saleprice>480</saleprice>
</price>
<color>black</color>
</phone>
</phones>
두 번째 파일 test1.xml
<?xml version="1.0" encoding="UTF-8"?>
<phones>
<phone>
<title>Nokia Lumia 830</title>
<price>
<regularprice>400</regularprice>
<saleprice>370</saleprice>
</price>
<color>black</color>
</phone>
</phones>
내가 1 개 test.csv 파일에이 XML 파일에서 일부 값을 변환 할 필요가
그래서이 PHP 코드를 사용하고 있습니다
,<?php
$filexml1='test.xml';
$filexml2='test1.xml';
//File 1
if (file_exists($filexml1)) {
$xml = simplexml_load_file($filexml1);
$f = fopen('test.csv', 'w');
$headers = array('title', 'color');
$converted_array = array_map("strtoupper", $headers);
fputcsv($f, $converted_array, ',', '"');
foreach ($xml->phone as $phone) {
//$phone->title = trim($phone->title, " ");
// Array of just the components you need...
$values = array(
"title" => (string)$phone->title = trim(str_replace ("\"", """, $phone->title), " "),
"color" => (string)$phone->color
);
fputcsv($f, $values,',','"');
}
fclose($f);
echo "<p>File 1 coverted to .csv sucessfully</p>";
} else {
exit('Failed to open test.xml.');
}
//File 2
if (file_exists($filexml2)) {
$xml = simplexml_load_file($filexml2);
$f = fopen('test.csv', 'a');
//the same code for second file like for the first file
echo "<p>File 2 coverted to .csv sucessfully</p>";
} else {
exit('Failed to open test1.xml.');
}
?>
test.csv의 출력이 방법
TITLE COLOR
Apple iPhone 5S black
Nokia Lumia 830 black
당신은 내가 유일한 변수에 각 파일을로드 관리 및 각 파일에 대해 내가 문은 스크립트를 만드는 경우 작성해야 볼 수있는 것처럼 보이는 너무 커서 xml 요소가 동일하고 하나의 .csv 파일로 출력되기 때문에 하나의 코드 블록으로 모든 파일을 배열로로드 할 수 있는지 궁금합니다. 기본적으로 적은 PHP 코드로만 동일한 test.csv 출력이 필요합니다.
미리 감사드립니다.
네 당신이 그렇게 배열 내부의 파일 이름을 넣을 수는 루프 그들 각각, 마지막으로 결국 다음 배열 내에서 모든 정보를 보유하고하는 용기를 넣어 fputcsv 그들 모두 – Ghost