Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CSV转换为XML,是否删除一些行?(菲律宾)_Php_Xml_Csv_Dom_Simplexml - Fatal编程技术网

Php CSV转换为XML,是否删除一些行?(菲律宾)

Php CSV转换为XML,是否删除一些行?(菲律宾),php,xml,csv,dom,simplexml,Php,Xml,Csv,Dom,Simplexml,因为我在将一些XML文件从CSV转换为XML时遇到了一些问题,所以我只想删除转换过程中不需要的数据。所以不要把他们改变 此外,这更聪明,因为我不必转换/导入几秒钟后要删除的数据。所以我节省时间 这是我的转换函数: function csvToXML($inputFilename, $outputFilename, $delimiter = ',') { // Open csv to read $inputFile = fopen($inputFilename, 'rt'); //

因为我在将一些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);
}
函数csvToXML($inputFilename,$outputFilename,$delimiter=','))
{
//打开csv进行读取
$inputFile=fopen($inputFilename,'rt');
//获取文件的标题
$headers=fgetcsv($inputFile,0,$delimiter);
//创建具有良好格式的新dom文档
$doc=新的DOMDocument('1.0','utf-8');
$doc->preserveWhiteSpace=false;
$doc->formatOutput=true;
//将根节点添加到文档中
$root=$doc->createElement('products');
$root=$doc->appendChild($root);
//循环遍历每一行,创建一个具有正确数据的节点
while(($row=fgetcsv($inputFile,0,$delimiter))!==false){
$container=$doc->createElement('product');
foreach($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.
(多字节)函数检查它

另一个选项是在转换之前删除标题数组与行中标题匹配的行。也许这更聪明还是最好在进口处检查一下


编辑(添加CSV样本):


你好,谢谢

你能提供示例csv文件吗?标题数组包含什么以及你在csv文件中匹配的列是什么?我在我的问题中加入了一个示例csv文件。该数组包含许多我从另一个XML文件获得的标题。大约有1600个标题。如果我的CSV文件的标题与数组中的标题匹配,那么该行应该导入到新的XML文件中——是的,我的函数正在工作。在此之后,只有转换为XML文件的CSV文件才会被破坏其他XML文件是正确的,如果标题与我的数组不匹配,则删除XML文件的节点。所以它必须是从CSV到XML的转换。。。我不知道为什么…:(正如我刚才对您的另一个问题所作的评论,请尝试将其归结为一个。如果问题是“如何检测此数组中的标题字符串是否存在于此其他数组中?”然后,我们不需要知道任何关于XML输出,甚至CSV输入的信息。我们需要的是一个小样本,
$row
的外观,以及一个小样本“我的标题数组”看起来是这样的。将问题分解为更小的部分是结构化编程和调试的本质;您可能会发现,当您将其分解时,答案变得显而易见,您根本不需要我们。