ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
3546
3546
EMPFEHLEN
-
13.03.09 10:57 #1
- Registriert seit
- Jul 2006
- Beiträge
- 8
Guten Tag zusammen
Ich habe ein kleines Problem, und zwar habe ich folgendes XML & PHP - Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
<root> <structure id="3" name="name" lang="de"> [COLOR="Blue"]<folder[/COLOR] id="279" name="Datenpool"> [COLOR="Blue"]<folder[/COLOR] id="278" name="Bücher"> [COLOR="Red"] <object id="9386" type="5" typename="beitrag"> <name>test1</name> <stable_since>1236680370</stable_since> <publishing>01.02.2009</publishing> <expiration>09.04.2009</expiration> </object>[/COLOR] [COLOR="Red"] <object id="9383" type="5" typename="beitrag"> <name>test2</name> <stable_since>1236680414</stable_since> <publishing>10.03.2009</publishing> <expiration>10.04.2009</expiration> </object>[/COLOR] [COLOR="Red"] <object id="9391" type="5" typename="beitrag"> <name>test3</name> <stable_since>1236011220</stable_since> <publishing>02.03.2009</publishing> <expiration>02.03.2010</expiration> </object>[/COLOR] </folder> [COLOR="Blue"]<folder [/COLOR]id="280" name="Zeitschriften"> [COLOR="Blue"]<folder[/COLOR] id="284" name="T1"> [COLOR="Red"] <object id="9390" type="5" typename="beitrag"> <name>Test4</name> <stable_since>1235579427</stable_since> <publishing>09.02.2009</publishing> <expiration>13.02.2010</expiration> </object>[/COLOR] </folder> </folder> </folder> </structure> </root>
Nun würde ich gerne mit xpath() jeweils nur die Objekte (rot) auslesen, jedoch habe ich nun das Problem, dass die Objekte jeweils n-mal in sogennante Folders (blau) unterteilt sind.PHP-Code:$xmlStr = file_get_contents('http://xxxx.de/test.xml');
$xml = new SimpleXMLElement($xmlStr);
$result = $xml->xpath('/root');
Gibt es eine Möglichkeit das das Resultat nur nach Objects zu durchsuchen?
Vielen Dank für Eure Antworten
Gruss
ritchizzle
-
Ist nur so eine Idee.
MfG, Andy
PHP-Code:// load simplexml object
$xml = new SimpleXMLElement($string);
// initiate path
$path = '/root';
// check for a sub result
while( $result = $xml->xpath($path) )
{
// add objects to result array
$objects[] = $result->object ;
// add one layer to path
$path .= '/folder';
}
Association for Valid wEb DevelOpment - Informatik, Programmierung & Webdesign
http://www.avedo.net
-
13.03.09 12:47 #3
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Versuch mal das:
GrüßePHP-Code:<?php
function retrieveElements($elements = null)
{
if($elements == null)
{
throw new Exception("Elements must not be null!");
}
$result = array();
foreach($elements as $element)
{
if( property_exists($element, "folder") )
{
$result = array_merge($result, retrieveElements($element->folder));
}
else
{
foreach($element->object as $object)
$result[] = $object;
}
}
return $result;
}
try
{
$fc = file_get_contents('test.xml');
$xml = simplexml_load_string($fc);
$elements = $xml->xpath('/root/structure/folder');
foreach(retrieveElements($elements) as $element)
{
echo "<pre>";
var_dump($element);
echo "</pre>";
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
13.03.09 13:26 #4
- Registriert seit
- Jul 2006
- Beiträge
- 8
Wow vielen Dank für eure schnellen Antworten. Es funktioniert tadellos
-
13.03.09 14:30 #5
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Dann bitte als erledigt markieren. Danke und Grüße
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
13.03.09 15:43 #6
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
das geht mit XPath viel einfacher:
Code :1
$result = $xml->xpath('[COLOR="Red"]//[/COLOR]object');
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
Ähnliche Themen
-
simplexml xpath und der selektive Zufgriff auf Element
Von weserwolf im Forum PHPAntworten: 2Letzter Beitrag: 17.09.09, 01:00 -
SimpleXML
Von PHPGuru86 im Forum PHPAntworten: 2Letzter Beitrag: 31.03.09, 21:56 -
SimpleXML und xpath Problem
Von monoblock im Forum PHPAntworten: 1Letzter Beitrag: 22.08.08, 15:22 -
SimpleXML und DTD
Von bandsite im Forum PHPAntworten: 1Letzter Beitrag: 03.08.06, 20:49 -
Java XPath Problem (1.5 javax.xml.xpath.*)
Von mad_dark_angel im Forum JavaAntworten: 5Letzter Beitrag: 10.05.06, 14:39





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren