2016-12-14 84 views
0

我想解析一个大的XML文件。它看起来像:PHP的XMLReader跳过子树

<application> 
    <action-keys> 
    <case-file>...</case-file> 
    <case-file>...</case-file> 
    <case-file>...</case-file> 
    </action-keys> 
    <action-keys> 
    <case-file>...</case-file> 
    <case-file>...</case-file> 
    <case-file>...</case-file> 
    </action-keys> 
<application> 

我打开它,并寻求“案卷”的价值观,但第一组的案档,这样做后,$ XML->未来(“案卷”)去该文件的结尾,第二组病例文件被跳过。如何获取所有案例文件?

+0

看看的SimpleXML - http://php.net/manual/en/book.simplexml.php – Derek

+0

我不能在给定时间加载整个XML文件。 – paladin

+0

你能提供一些代码吗? – Iarwa1n

回答

0

你可以尝试这样的事情。它将读取文件的所有节点并提取所有case-file xml元素的文本内容。

$caseFiles = array(); 
$xml = new XMLReader(); 
$xml->open('content.xml'); 
while ($xml->read()) { 
    if ($xml->nodeType == XMLReader::ELEMENT && $xml->name==='case-file') { 
     $xml->read(); 
     $caseFiles[] = $xml->readString(); 
    } 
}