Überprüfen Sie, ob die Eigenschaft vorhanden ist, ohne die Warnung "Knoten ist nicht mehr vorhanden" zu erhalten

9

Ich verwende SimpleXML. Wenn die Benutzereingabe für meine Funktion ungültig ist, ist meine Variable $x ein leeres SimpleXMLElement-Objekt; Ansonsten hat es eine aufgefüllte Eigenschaft $x->Station . Ich möchte überprüfen, ob Station existiert.

%Vor%

Das macht, was ich will, außer es gibt einen Fehler zurück:

  

Warnung: WeatherData :: parse_weather_xml (): Knoten existiert nicht mehr in WeatherData- & gt; parse_weather_xml () (Zeile 183 von vvdtn.inc).

Okay, also ist isset() out. Lass es uns versuchen:

%Vor%

Dies verhält sich fast identisch:

  

Warnung: property_exists (): Knoten existiert nicht mehr in WeatherData- & gt; parse_weather_xml () (Zeile 183 von vvdtn.inc)

Alles klar, gut, ich werde es zu einer Ausnahme machen und sie ignorieren. Ich habe das noch nie gemacht und bin mir nicht sicher, ob ich es richtig mache, aber ich werde es versuchen:

%Vor%

Das gibt eine eigene HTML-Seite zurück:

  

Zusätzliche nicht abgefangene Ausnahme beim Behandeln der Ausnahme.

     

Original

     

ErrorException: property_exists (): Knoten existiert nicht mehr in crazy_error () (Zeile 183 von vvdtn.inc).

     

Zusatz

     

ErrorException: stat (): stat fehlgeschlagen für /sites/default/files/less/512d40532e2976.99442935 in crazy_error () (Zeile 689 von /includes/stream_wrappers.inc).

     

Also lache ich jetzt hysterisch und gebe auf. Wie kann ich nach der Existenz einer Eigenschaft eines SimpleXML-Objekts suchen, ohne diesen Fehler in der einen oder anderen Form zu bekommen?

    
75th Trombone 26.02.2013, 23:27
quelle

4 Antworten

1

Möchten Sie überprüfen, ob Ihr simplexml einen bestimmten Knoten enthält oder nicht? - & gt; Zähle sie!

EDIT: Fehler wenn Knoten nicht existiert - & gt; versuche xpath:

%Vor%

wird Fehler ausgeben, wenn kein Stationsknoten:

Sagen Sie $xml ist Ihre simplexml und station ist auf der obersten Ebene:

%Vor%

Wenn 'Station' beispielsweise ein Kind von <something> ist, würden Sie natürlich gehen ...

%Vor%     
michi 26.02.2013 23:33
quelle
0
%Vor%

Wichtig - !$x - Sie müssen dieses XML-Objekt auf leer prüfen. Wenn es wahr ist, dann kann bei jedem Versuch, $x->Station aufzulösen, dieser Fehler auftreten.

    
Enyby 01.03.2017 05:18
quelle
0

Überprüfen Sie zuerst, ob Sie versehentlich versucht haben, auf eine Eigenschaft zuzugreifen, ohne vor dem zu überprüfenden Bit zu prüfen (manchmal stimmt die Fehlermeldung nicht mit den Zeilennummern überein).

Dann habe ich esset verwendet und es funktioniert gut:

%Vor%     
dzerow 30.08.2017 21:56
quelle
0

Hast du property_exists() versucht?

%Vor%

Und berücksichtigen Sie diesen Hinweis:

%Vor%     
uldo 02.09.2017 08:11
quelle