Anzeige:
Ergebnis 1 bis 4 von 4

Thema: XML parsen mit Doppelpunkt im Tag

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.05.2010
    Beiträge
    93

    XML parsen mit Doppelpunkt im Tag

    Hallo,
    ich möchte eine xml-Datei parsen. Dazu nutze ich im Moment SimpleXML. Soweit funktioniert das ganze auch, jedoch kann ich keine Werte aus Tags parsen, welche Doppelpunkte enthalten. Ich habe schon stundenlang gegoogelt, aber entweder verstehe ich die Lösung nicht oder sie passt nicht zu meinem Problem.

    Hier ein Auszug der XML-Datei
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <gpx>
    	<name>test</name>
    	<desc>test</desc>
    	<email>test</email>
    	<wpt>
    		<time>test</time>
    		<name>test</name>
    		<desc>test</desc>
    		<group:header>
    			<group:name>test</group:name>
    			<group:value>test</group:value>
    		</group:header>
    	</wpt>
    </gpx>
    Mein PHP-Code
    PHP-Code:
    $xml simplexml_load_file('test.txt');
          
    $ausgabe1 $xml->wpt[0]->name;
    $ausgabe2 $xml->wpt[0]->desc
    DAS funktioniert. Möchte ich aber auf die Elemente mit dem Doppelpunkt zugreifen, führt es zu Fehlermeldungen.

    Kann jemand ganz kurz ein paar Zeilen Code schreiben, wie ichein Element mit Doppelpunkt auslesen kann?

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    group ist ein Namespace siehe die Option ns oder registerXPathNamespace
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.05.2010
    Beiträge
    93
    danke, das hat mir schonmal sehr geholfen!
    nun sieht es bei mir in entwa so aus (im Moment noch nur zum testen):

    PHP-Code:
    $xml = <<<EOD
    <gpx xmlns:group="test">
        <wpt>
            <group:cache xmlns:group="test">
                <group:name>test1</group:name>
                <group:desc>test2</group:desc>
                <group:time>test3</group:time>
            </group:cache>
        </wpt>    
        <wpt>
            <group:cache xmlns:group="test">
                <group:name>test4</group:name>
                <group:desc>test5</group:desc>
                <group:time>test6</group:time>
            </group:cache>
        </wpt>    
    </gpx>
    EOD;

    $sxe = new SimpleXMLElement($xml);
    $sxe->registerXPathNamespace('group''test');

      
    $result $sxe->xpath('//group:name');
      
    $result $sxe->xpath('//group:desc');
      
    $result $sxe->xpath('//group:time');

    foreach (
    $result as $title)
    {
      echo 
    $title.'<br>';

    Soweit ich das jetzt hab, kann ich aus jedem <wpt>-Tag immer nur einen Wert rauslesen.
    Ich möchte aber aus jedem <wpt>-Tag immer mehrere auslesen. Kann ich nicht in EINER Schleife immer einen kompletten <wpt>-Tag auslesen? Diese hinausgelesenen Strings möchte ich dann in Variablen speichern? Im nächsten Schleifendurchlauf ist dann der 2. <wpt>-Tag dran und so weiter.

    Wie mache ich das am besten? Bin absoluter Anfänger, wenns um sowas geht...

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Warum liest du nicht die SimpleXMLElement Manual auf PHP.net? In den angefügten Beispielen kannst du doch ableiten was du benötigst.
    http://de3.php.net/manual/de/class.simplexmlelement.php

    Zudem ist SimpleXML eher was für einfache XML Strukturen erstellen.
    Beim lesen ist DOM wesentlich Leistungsstärker

    PS: Das hier ist ein PHP Problem und deshalb im falschen Forenbereich.
    Geändert von undefined (14-10-2010 um 18:24 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •