【问题标题】:PHP: How do I loop through every XML file in a directory?PHP:如何遍历目录中的每个 XML 文件?
【发布时间】:2010-03-20 22:41:27
【问题描述】:

我正在构建一个简单的应用程序。它是在线订购系统的用户界面。

基本上,系统会这样工作:

  1. 其他公司将他们的采购订单上传到我们的 FTP 服务器。这些订单是简单的 XML 文件(包含客户数据、地址信息、订购的产品和数量……)

  2. 我用 HTML5、jQuery 和 CSS 构建了一个简单的用户界面——全部由 PHP 提供支持。

  3. PHP 读取订单的内容(使用 SimpleXML 的内置功能)并将其显示在网页上。

所以,它是一个网络应用程序,应该始终在办公室的浏览器中运行。 PHP 应用程序将显示所有订单的内容。每隔十五分钟左右,该应用就会检查新订单。

如何循环遍历目录中的所有 XML 文件?

现在,我的应用程序能够读取单个 XML 文件的内容,并在页面上以一种很好的方式显示它。

我当前的代码如下所示:

// pick a random order that I know exists in the Order directory:
$xml_file = file_get_contents("Order/6366246.xml",FILE_TEXT);
$xml = new SimpleXMLElement($xml_file);

// start echo basic order information, like order number:
echo $xml->OrderHead->ShopPO;
// more information about the order and the customer goes here…

echo "<ul>";

// loop through each order line, and echo all quantities and products:
foreach ($xml->OrderLines->OrderLine as $orderline) {
    "<li>".$orderline->Quantity." st.</li>\n".
    "<li>".$orderline->SKU."</li>\n";
}
echo "</ul>";

// more information about delivery options, address information etc. goes here…

所以,这就是我的代码。很简单。它只需要做一件事——在屏幕上打印出所有订单文件的内容——这样我和我的同事就可以看到订单、确认并交付。

就是这样。

但是现在——如您所见——我一次只选择一个订单,位于订单目录中。但是我如何遍历整个订单目录,并读取并显示每个订单的内容(如上)?

我被困住了。我真的不知道你如何在一个目录中获取所有 (xml) 文件,然后对这些文件执行一些操作(比如读取它们并回显数据,就像我想要的那样)。

【问题讨论】:

  • 请记住,根据您的 ftp 服务器设置,您可能正在处理当前上传的文件,因此不完整。

标签: php xml directory loops simplexml


【解决方案1】:

试试glob函数:

$files = glob("Order/*xml");

if (is_array($files)) {

     foreach($files as $filename) {
        $xml_file = file_get_contents($filename, FILE_TEXT);
        // and proceed with your code
     }

}

【讨论】:

    【解决方案2】:

    任何希望存储在 laravel storagege/xml 中的人,他们都可以从那里获取整个 xml 文件,并使用 Laravel 中的以下函数将其更改为 json,但只需稍加修改即可在核心 PHP 中使用,

       public function parse () {
        $files = File::allFiles(storage_path('xml'));
    
        //dd($files);
    
        foreach($files as $filename) {
            //dd($filename);
            $xml_file = file_get_contents($filename, FILE_TEXT);      
            $xml = simplexml_load_string($xml_file, "SimpleXMLElement", LIBXML_NOCDATA);
            $json = json_encode($xml);
            $array[] = json_decode($json,TRUE);
            //dd($array);
        }
        dd($array);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2019-10-05
      相关资源
      最近更新 更多