PHP XML导入选项

时间:2013-06-17 12:10:25

标签: php xml arrays import

我正在通过simplexml_load_string

加载一些xml文件

我的代码是

$xml = simplexml_load_string($fileContent, NULL, LIBXML_NOCDATA);

它运作正常但是:

<photos>
    <photo>8894133.jpg</photo>
    <photo>8892133.jpg</photo>
</photos>

将加载为

  'photos' => 
    array (size=1)
      'photo' => 
        array (size=2)
          0 => string '8894133.jpg' (length=61)
          1 => string '8894133.jpg' (length=61)

虽然1'行'仅包含数据:

<photos>
    <photo>8894133.jpg</photo>
</photos>

将像

一样加载
'photos' => 
    array (size=1)
      'photo' => string '892133.jpg' (length=61)

它与数组结构不同。首先是index>array>index>array>index>data,第二个是index>array>index>data

是否可以配置加载,因此奇异数据不会像字符串那样直接加载,而是作为1个元素数组加载,所以第二个结果将是

  'photos' => 
    array (size=1)
      'photo' => 
        array (size=1)
          0 => string '8894133.jpg' (length=61)

1 个答案:

答案 0 :(得分:0)

您应该使用xml-Object直接从节点获取数据。没有理由从根节点迭代。

首先使用以下命令加载文件:

// create xml-object from file
if(!$xml = simplexml_load_file($xmlFile)) {
   $this->addErrorMessage('XML Objekt could not be loaded from file:'.$xmlFile);
}

然后直接从节点获取数据:

//save Data from xml to whatever
foreach ($xml->photo as $newPhoto){
    // create and return object with data
    $myData = $newPhoto;
}