xmlReader eine tiefe weiter auslesen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • xmlReader eine tiefe weiter auslesen?

    Hallo

    Ich hab ein problem mit dem auslesen in der tiefe, ich möcht das modem mit auslesen!

    hier ein ausschnitt vom xml:

    PHP-Code:
    - <ProdList fiberReal="NO" availability="GREEN" installType="TKD" prodVoBSidID="TSPO--pCISPA_QOS_128_1G" prodSidIDName="2048/512 kBit/s FLAT" prodSidID="TSPO--pC17771">
      <
    bandwidthXDSL sidid="TSPO--pC10269" name="2048/512 kBit/s" /> 
      <
    downVol sidid="TSPO--pC13028" name="FLAT" /> 
      <
    category sidid="TSPO--pC13027" name="Residential" /> 
      <
    bandwidthVoB sidid="TSPO--pCISPA_QOS_128128" name="192/192 kBit/s" /> 
      <
    modem sidid="TSPO--pCISPA_MODEM_2070" name="PIRELLI PRG4202 WLAN" /> 
      </
    ProdList
    und hier mein code:

    PHP-Code:
        if($xmlReader->nodeType == XMLReader::ELEMENT) {
            if(
    $xmlReader->localName == 'nakedProdList') {
              if(
    $xmlReader->getAttribute('prodVoBSidID') == ''){
                
    $nakedprodlist .= "<nakedProdList>";
                
    $nakedprodlist .= "<availability>".$xmlReader->getAttribute('availability')."</availability>";
                
    $nakedprodlist .= "<installType>".$xmlReader->getAttribute('installType')."</installType>";
                
    $nakedprodlist .= "<prodSidID>".$xmlReader->getAttribute('prodSidID')."</prodSidID>";
                
    $nakedprodlist .= "<modem>".$xmlReader->getAttribute('sidid')."</modem>";
                
    $nakedprodlist .= "</nakedProdList>";            
                
    $i++;            
            }}} 
    wie kann ich das einfach realisieren??

  • #2
    Warum nicht mit DOM und XPATH?

    Ebenso ist das händische zusammen klöppeln von XML fehlerträchtig.
    Auch hier bietet sich DOM an.
    Wir werden alle sterben

    Kommentar


    • #3
      ich dachte das geht mit dom nicht wenn ich so ein format zur verfügung habe?

      ProdList fiberReal="NO" availability="GREEN" installType="TKD"

      Kommentar


      • #4
        Hallo,

        für das was du vorhast, solltest du PHP: XSL - Manual benutzen, das ist viel einfacher, als selber irgendwas zusammenzuklöppeln.

        Wenn du es trotzdem nach deiner Variante machen willst, hast du zwei Fehler drin:
        1. Du bellst den falschen Baum an – ProdList ist nicht nakedProdList und das Attribut was du unbedingt leer haben willst ist nicht leer. Dein Problemkontext ist also für die Tonne.
        2. $xmlReader->getAttribute('sidid') ruft das Attribut vom aktuellen Element ab, wo es nicht existiert. Entweder du wartest, bis der XMLReader sowieso beim modem-Element vorbeikommt und fragst es dann ab, oder du holst dir mit expand() das aktuelle Element als DOM und suchst darin nach dem Modem.


        Edit: Was ist es denn für ein Format? XML? Warum sollte es dann mit DOM nicht gehen?

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          soap

          <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
          - <soap:Body>

          das mit dem prodlist hab ich zu spät gesehen hab die vorige version gepostet!

          Kommentar


          • #6
            SOAP ist zwar auch XML und lässt sich daher ebenfalls mit DOM oder XSL verarbeiten, aber noch leichter geht es mit PHP: SoapClient - Manual
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Bei SOAP ist es doch gerade der Trick, dass sich kein Mensch mehr um das XML kümmern muss.
              Wir werden alle sterben

              Kommentar


              • #8
                ich wollte mir meine eigene xml ausgabe zusammensetzten, da in der soap rückgabe zigtausenede werte zurückkommen die keiner braucht!

                es muss doch eine möglichkeit geben damit ich das modem rausbekomme!

                Kommentar


                • #9
                  Eigentlich wurden doch die Lösungen schon genannt. Wenn ich es richtig verstanden habe, möchtest, sprichst Du einen SOAP Dienst an, der Dir diverse Daten liefert. Normalerweise gibt es zu einem Soap Service eine WSDL Datei, die Dir alle Funktionen und Typen des Soap Services bietet. Anhand dessen kannst Du mit dem PHP SoapClient Objekt Daten senden und empfangen ohne Dich elendig lange mit dem XML Schema auseinander setzen zu müssen. Du arbeitest im Idealfall nur mit Objekten und deren Eigenschaften. Du sendest Objekte und es werden Dir entsprechende Objekte als Antwort geliefert.
                  MM Newmedia | MeinBlog

                  Kommentar


                  • #10
                    besten Dank für die antworten!

                    habs jetzt etwas rusisch gelöst!

                    trotzdem Danke!

                    Kommentar

                    Lädt...
                    X