1

我正在通过加载一些 xml 文件simplexml_load_string

我的代码是

$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)
4

1 回答 1

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;
}
于 2014-12-23T15:13:55.453 回答