2016-12-14 4 views
0

Ich versuche, eine große XML-Datei zu analysieren. Es sieht aus wie:PHPs XMLReader überspringt Teilbäume

<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> 

ich es öffnen und die „Akten“ Werte suchen, aber nach dem ersten Satz von Fall-Dateien, einen $ xml-> weiter („case-Datei“) zu tun geht an Am Ende der Datei wird der zweite Satz von Falldateien übersprungen. Wie bekomme ich alle Falldateien?

+0

einen Blick auf SimpleXML Take - http://php.net/manual/en/book.simplexml.php – Derek

+0

ich die ganze XML-Datei zu einem bestimmten Zeitpunkt nicht geladen werden kann. – paladin

+0

Können Sie einen Code bereitstellen? – Iarwa1n

Antwort

0

Sie können so etwas versuchen. Es liest alle Knoten der Dateien und extrahiert den Textinhalt aller case-file XML-Elemente.

$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(); 
    } 
}