| XML Hier passt alles rein, was das Thema XML (XSLT, etc...) betrifft, auch in Verbindung mit PHP |
 |

22-01-2012, 11:24
|
|
erti
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 122
|
|
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??
|

22-01-2012, 11:59
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Warum nicht mit DOM und XPATH?
Ebenso ist das händische zusammen klöppeln von XML fehlerträchtig.
Auch hier bietet sich DOM an.
|

22-01-2012, 12:03
|
|
erti
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 122
|
|
ich dachte das geht mit dom nicht wenn ich so ein format zur verfügung habe?
ProdList fiberReal="NO" availability="GREEN" installType="TKD"
|

22-01-2012, 12:08
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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: - 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.
- $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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

22-01-2012, 12:20
|
|
erti
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 122
|
|
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!
|

22-01-2012, 12:23
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

22-01-2012, 12:37
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Bei SOAP ist es doch gerade der Trick, dass sich kein Mensch mehr um das XML kümmern muss.
|

22-01-2012, 13:17
|
|
erti
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 122
|
|
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!
|

22-01-2012, 13:34
|
|
ezkimo
Registrierter Benutzer
|
|
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
|
|
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.
|

25-01-2012, 16:39
|
|
erti
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 122
|
|
besten Dank für die antworten!
habs jetzt etwas rusisch gelöst!
trotzdem Danke!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|