1
我正在使用XMLReader來解析我不控制的文件。該文件缺少一些元素,例如下面。在書籍2缺少一個信息元素的地方,我仍然想把它添加到數組中。我意識到我可以使用XMLReader和SimpleXML的組合......但我想看看這是可能的嗎?PHP XMLReader處理丟失的元素
<book>
<title>book 1</title>
<info>book 1 info</info>
</book>
<book>
<title>book 2</title>
</book>
<book>
<title>book 3</title>
<info>book 3 info</info>
</book>
我有以下的XMLReader功能:
<?php
function parseXML($args){
extract($args);
$xml = new XMLReader();
$xml->open($file) or die('Cannot open file');
while($xml->read()){
switch($xml->nodeType){
case(XMLREADER::ELEMENT):{
if(in_array($xml->localName, $nodes, true)){
$lName = $xml->localName;
$val = $xml->readString();
$xml->read();
$child[$lName] = trim($val);
if($lName == end($nodes)){
$arr[] = $child;
}
}
}
break;
}
}
$xml->close($file);
return $arr;
}
$settings = array(
'file' => 'books.xml',
'nodes' => array('name', 'info')
);
$books = parseXML($settings);
var_dump($books);
?>
主要生產:
Array
(
[0] => Array
(
[name] => book 1
[info] => book 1 info
)
[1] => Array
(
[name] => book 3
[info] => book 3 info
)
)
運行完美,非常感謝回去我號樓
$books
。 – rossjha