【问题标题】:PHP - Read file in folder and subfolders and export to XML filePHP - 读取文件夹和子文件夹中的文件并导出到 XML 文件
【发布时间】:2012-10-09 11:18:26
【问题描述】:

我明白了

XML 解析错误:文档元素后出现垃圾 地点:xxxxxxxxx 第 2 行第 1 列

这是代码:

<?php

$xml_generator = new SimpleXMLElement('<data/>');

filesindir('assets/images/');
function filesindir($dirs) {
    $dirs = scandir($tdir);
    while ($file = readdir($dirs)) {
            if (($file == '.')||($file == '..')) {
            } elseif (is_dir($tdir.'/'.$file)) {
                filesInDir($tdir.'/'.$file);
            } else {
                $image = $xml_generator->addChild('image');  
                $image->addChild('name', $file);
            }
    }
}

header("Content-Type: text/xml");
$xml_generator->asXML('data.xml');
echo $xml_generator->asXML();
?>

我做错了什么?

【问题讨论】:

  • 您可以发布 XML 结果(来源)吗?如果您的文件名包含无效的 XML,您必须将 Child 作为 CDATA 附加:php.net/manual/de/simplexmlelement.addchild.php#104458
  • 你用一个简单的样本试过了吗?也许您的测试集中存在非法(对于 xml)字符(考虑孩子的内容,例如,如果没有关闭图像内容的“

标签: php xml scandir


【解决方案1】:

很多东西错了..看起来你复制和合并了这么多代码..

试试

$xml = new SimpleXMLElement('<data/>');

scanFiles(__DIR__, $xml);

function scanFiles($path, SimpleXMLElement $xml, $allowed = array("jpg","png")) {
    $list = scandir($path);
    foreach ( $list as $file ) {
        if ($file == "." || $file == ".." || ! in_array(pathinfo($file, PATHINFO_EXTENSION), $allowed))
            continue;
        $image = $xml->addChild('image');
        $image->addChild('name', $file);
        $image->addChild('size', filesize($file));
    }
}

header("Content-Type: text/xml");
$xml->asXML('data.xml');
echo $xml->asXML();

输出

<?xml version="1.0"?>
<data>
  <image>
    <name>a.jpg</name>
    <size>17129</size>
  </image>
  <image>
    <name>a2.jpg</name>
    <size>11100</size>
  </image>
  <image>
    <name>fake.png</name>
    <size>167</size>
  </image>
</data>

【讨论】:

  • 我使用您的代码并运行我得到“此 XML 文件似乎没有任何与之关联的样式信息” xml 文件中的 仅此而已 我做错了什么(再次) ?
  • 我很抱歉打扰,我认为您的代码似乎是正确的。我使用了 scanFiles('assets/images', $xml);设置我的目录,但我没有从中得到任何东西..即使我的文件夹中有文件。
  • @ปลั๊ก แปดนิ้ว 没关系..很高兴我能提供帮助
  • 好的,我终于明白了,xml 文件可以完全正常工作......我只是无法在 php 文件上测试它。所以我认为xml的标头是罪魁祸首。但是我对您的代码还有另一个问题。它不读取子文件夹,不是吗?那么我怎样才能读取子文件夹中的文件呢?再次感谢...
  • 请做。这将有很大帮助。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2016-06-03
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多