php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2011, 13:27  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard Xml-xpath

wieso liefert dieser Code ein leeres Array ?

PHP-Code:
$result $xml->xpath("bestellung/auftragsdateien/datei"); 
in $xml wird ein Objekt zurückgegeben (habs per var_dump geprüft)

zugehörige xml-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Bestellinformationen -->
<bestellung>
  <auftrag>
  noch andere nodes
<preflight>ok</preflight>
    </datei>
  </auftragsdateien>
</bestellung>
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.12.2011, 13:37  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Ich glaube, bei der zugehörigen XML-Datei hast du die Hälfte vergessen. Die stimmt zumindest nicht.
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 19.12.2011, 13:38  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Weil dein XML total kaputt ist? Du machst <auftrag> auf und schließ mit </auftragsdateien>, <dateien> machst du auch nirgends auf.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 19.12.2011, 13:40  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

$xml ist bereits der Root-Knoten der XML Datei, also <bestellung>.

Daher sucht dein xpath-Query unterhalb von <bestellung> ($xml) als erstes nach einem weiterem <bestellung>-Tag, welches natürlich nicht existiert.

Edit: Ich denke die Fehler in der XML Datei kommen von seinem C&P. Ansonsten könnte $xml kein Objekt sein.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 19.12.2011, 13:43  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

ja - natürlich hab ich nicht die ganze xml gepostet.

Da steht ja auch "noch andere nodes".

Ich check das mit dem Root-Knoten.

edit:
ja - das mit dem Root-Knoten wars.

thx Guardian
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 19.12.2011, 14:08  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

ich krieg noch die Krise mit dem Schrott.

Dieser Code hier:
PHP-Code:
$result $xml->xpath("auftragsdateien/datei");
            
            
$status 0;

            
            while(list( , 
$node) = each($result)) { 

                if(
count($node->preflight) > 0) {
                    
                    echo 
'<pre>';
                    
var_dump($node->preflight);
                    echo 
'</pre>';
                
                    if(
array_key_exists($node->preflight$CFG_XML_CODES) && $CFG_XML_CODES[$node->preflight] > $status$status $CFG_XML_CODES[$node->preflight];
                    exit();
                }
            } 
liefert mir:
Code:
object(SimpleXMLElement)#3 (1) {   [0]=>   string(2) "ok" }  

Warning: array_key_exists(): The first argument should be either a  string or an integer in xxx.php  on line 387
Wie komm ich den jetzt an den Text aus dem $§%$"%-Objekt ?

Laut Doku soll das ganz einfach sein:
PHP-Code:
 <?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

echo 
$xml->movie[0]->plot// "So this language. It's like..."
?>
Aber egal wo ich [0] hinschreib, ob f(array_key_exists($node[0]->preflight ...
oder f(array_key_exists($node->preflight[0], immer krieg ich die Warning, daß ein string oder integer erwartet wird.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 19.12.2011, 14:11  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

SimpleXML liefert immer Objekte.

Im Falle eines echos werden diese automatsich nach String gecastet.

Wenn du diese an Funktionen übergeben willst, musst du vorher selber casten.

---> array_key_exists((string)$node->preflight...
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 19.12.2011, 14:17  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

wollt ich auch schon machen, aber ich dacht das geht nicht ein Objekt nach String casten.
Scheint mir unlogisch.
Aber ich machs so.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 19.12.2011, 14:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

http://www.php.net/manual/en/languag...magic.tostring
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 19.12.2011, 16:57  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

http://de2.php.net/manual/de/class.s...ent.php#100162

Da geht noch ganz was anderes mit

Der Thread hier wirkt bissl wie "Ey, ich hab da garkein bock drauf, muss das aber machen und hab grad keinen Wald da wo Bäume sind.", zumindest aus der Sicht was der TE so rauslässt ^^
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem mit XPath - XPath liefert nicht das erwartete Ergebnis Suralc PHP Einsteiger 8 26.04.2011 22:11
[Erledigt] HTML-Reports auswerten mit xpath obelix PHP Einsteiger 11 26.04.2011 15:45
[Erledigt] Mit xpath() mehrere Knoten suchen &amp; ausgeben wooha PHP Einsteiger 5 21.04.2011 00:24
[Erledigt] XPath - parent attribute auslesen Paul.Schramenko PHP Einsteiger 12 04.04.2011 14:37
Xpath Frage Pulmer PHP Einsteiger 7 02.03.2011 17:07
[Erledigt] Korrekter XPath? Dark Guardian PHP Einsteiger 10 15.02.2011 14:27
[Erledigt] Mit PHP auch XPATH? muncher PHP Einsteiger 15 08.01.2011 12:37
[Erledigt] Mit XPath im DOMDocument PHP5 und der foreach Schleife einen Element WERT hjw-kunstwerk PHP Tipps 2010 3 03.06.2010 00:07
[Erledigt] Mit xpath den nodevalue vergleichen dileso PHP Tipps 2010 2 06.05.2010 10:54
XML Kommentar mit XPath auslesen den JavaScript, Ajax und mehr 1 08.12.2008 15:48
Error bei Benützung von xpath Arno PHP-Fortgeschrittene 2 25.04.2008 10:28
Node Selection mit XPath HStev PHP Tipps 2005-2 3 12.08.2005 12:21
[Erledigt] XML mit simplexml und xpath in HTML umwandeln PHP-Fortgeschrittene 3 15.07.2005 01:39
XML und XPath Finkman PHP Tipps 2004 0 16.08.2004 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xpath if abfrage, if else abfragen in xpath

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum