因为我将一些XML文件从CSV转换为XML有一些问题,我只想在转换过程中直接删除我不需要的数据。所以只是不要转换它们。
此外,这更加智能,因为我不必在几秒钟之后转换/导入我想要删除的数据。所以我节省了时间。
这是我的转换功能:
function csvToXML($inputFilename, $outputFilename, $delimiter = ',')
{
// Open csv to read
$inputFile = fopen($inputFilename, 'rt');
// Get the headers of the file
$headers = fgetcsv($inputFile, 0, $delimiter);
// Create a new dom document with pretty formatting
$doc = new DOMDocument('1.0', 'utf-8');
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
// Add a root node to the document
$root = $doc->createElement('products');
$root = $doc->appendChild($root);
// Loop through each row creating a <row> node with the correct data
while (($row = fgetcsv($inputFile, 0, $delimiter)) !== false) {
$container = $doc->createElement('product');
foreach ($headers as $i => $header) {
$child = $doc->createElement($header);
$child = $container->appendChild($child);
$value = $doc->createTextNode($row[$i]);
$value = $child->appendChild($value);
}
$root->appendChild($container);
}
$strxml = $doc->saveXML();
$handle = fopen($outputFilename, 'w');
fwrite($handle, $strxml);
}
我现在的问题是,我有一个包含标题的数组。标题与我的标题数组匹配的所有CSV行都不应转换为XML。但是我该怎么做呢? - 我还需要通过mb_...
(多字节)函数来检查它!
另一个选项是在转换之前删除我的标题数组与行中的标题匹配的行。也许这更聪明? - 或者最好在导入时检查一下?
问候,谢谢!