2017-03-16 5 views
1

ich habe ein kleines Problem:für einen bestimmten Wert in XML-Dateisuche mit PHP

Ich habe diese XML-Datei:

<response> 
    <game_count>768</game_count> 
    <games> 
     <message> 
      <appid>730</appid> 
      <playtime_forever>549</playtime_forever> 
     </message> 
     <message> 
      <appid>1300</appid> 
      <playtime_forever>0</playtime_forever> 
     </message> 
     <message> 
      <appid>1309</appid> 
.... 

I appid == '730' für den Wert zu suchen versucht, aber leider half nichts .

z.B Ich habe versucht, dies:

$game = new SimpleXMLElement($account_game_data); 
$res = $game->xpath("games/message/appid[. = 730]"); 
print_r($res); 

Mein Ergebnis <appid>730</appid><playtime_forever>549</playtime_forever></message> als SimpleXMLElement sein sollte.

Wenn Code benötigt wird, werde ich es posten.

+0

in Ihrem Endergebnis der Geschwister-Tag wird ebenfalls erfasst, sollte ist es so? – RomanPerekhrest

+0

@RomanPerekhres Es funktioniert sehr gut. Zumindest hatte ich einen Fehler, der nicht auf deinen Code bezogen ist. Es bewirkt, dass das 'Spiel'-var leer war. Danke für die Hilfe – SacrumDeus

Antwort

2

Verwenden Sie die folgende Vorgehensweise:

$game = new \SimpleXMLElement($account_game_data); 
$res = $game->xpath('games/message[appid="730"]'); 
print_r($res[0]->asXML()); 

Der Ausgang:

<message> 
      <appid>730</appid> 
      <playtime_forever>549</playtime_forever> 
     </message> 

message[appid="730"] - entspricht das message Element, das Kind hat appid mit Wert 730

+0

anstatt das übergeordnete Element mit '..' auszuwählen, können Sie das Ende des Pfades in das Prädikat setzen:' games/message [appid = "730"] '. Sie können sogar die Kinder der ersten "Nachricht" auswählen, die übereinstimmt: 'games/message [appid =" 730 "] [1]/*' * (dann müssen Sie sie durchlaufen, um sie mit 'SimpleXMLElement :: asXML anzuzeigen() ') * –

+0

Seltsam, ich habe dieses Problem nicht: https://eval.in/755883 (vielleicht kümmern sich um die Zitate, die ich verwendet habe). –

+0

Sie müssen den Schrägstrich vor dem Prädikat entfernen. –

Verwandte Themen