我正在通过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)
答案 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;
}