【问题标题】:How can I parse directory of xml files with php?如何使用 php 解析 xml 文件的目录?
【发布时间】:2020-03-30 15:27:06
【问题描述】:

我是 php 新手,我正在尝试创建一个文件上传系统,该系统将使用 simplexml 自动解析 xml 文件。我创建了一个 php 脚本,它将打开目录并尝试解析文件。由于某种原因,它只会解析其中一个文件。我不确定这是否是完成这项任务的最佳方式。

 <?php
$dir = "path/to/xmlfiles"
chdir($dir);

// Open a directory, and read its contents
if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
      $xml = simplexml_load_file($file);
      $nombre = $xml ->xpath("//NOMBRE");
      $rpu = $xml ->xpath("//RPU");
      echo (string) $nombre[0];
      echo (string) $rpu[0];
      echo $file;
    }
    closedir($dh);
  }
}
?>

对于这个脚本,我可以很好地回显结果,唯一的问题是它只会回显其中一个 xml 文件结果。

希望有更多经验的人可以告诉我如何实现这一目标。

对于额外的点,我还尝试为每个解析的文件插入一个 Mysql 数据库的条目。

;) 提前感谢您的所有帮助。

【问题讨论】:

标签: php mysql xml parsing simplexml


【解决方案1】:

readdir() 读取存储在磁盘上的目录条目(即,它不对条目进行排序),因此.(当前目录)很可能是第一个。这将使simplexml_load_file() 失败,$xml 将变为false,因此$xml-&gt;xpath() 将导致脚本崩溃并出现致命错误。

PHP 应该报告这一切。如果看不到,很可能是你没有配置PHP到display errors。

您需要过滤掉条目(最低限度是检查它们是实际文件而不是目录)并在这里和那里添加一些错误检查。

另一种方法:

foreach (glob("$dir/*.xml") as $file) {
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多