kostenloser Webspace werbefrei: lima-city


PHP || Wert eines Attributes einer XML-Datei auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Habe ein Problem dabei, den Wert eines Attributes einer XML-Datei über PHP auszulesen.
    Ich bekomme einfach keinen Wert zurück.

    Generell geht es darum, jede "row" auf vorhandensein des Attributes "rawQuantity" zu überprüfen.
    Ist das Attribut vorhanden, soll einfach sein Wert ausgegeben werden.

    Die XML-Datei ist folgendermaßen aufgebaut:
    <eveapi version="2">
        <currentTime>2012-04-20 15:36:02</currentTime>
            <result>
                <rowset name="assets" key="itemID" columns="itemID,locationID,typeID,quantity,flag,singleton">
                    <row itemID="206888503" locationID="60007168" typeID="1819" quantity="1" flag="4" singleton="0"/>
                    <row itemID="1252706043" locationID="60007168" typeID="967" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
                    <row itemID="1413217407" locationID="60007168" typeID="1318" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
                    <row itemID="1001594515266" locationID="60007168" typeID="11082" quantity="1" flag="4" singleton="0"/>
                    <row itemID="1001594519031" locationID="60007168" typeID="12207" quantity="1" flag="4" singleton="0"/>
                    <row itemID="1005669663551" locationID="60007168" typeID="587" quantity="1" flag="4" singleton="1" rawQuantity="-1">
                    <row itemID="1005697415058" locationID="60007168" typeID="22555" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
                    <row itemID="1005830297705" locationID="60007168" typeID="11488" quantity="1" flag="4" singleton="1" rawQuantity="-1">
                </rowset>
            </result>
        <cachedUntil>2012-04-20 20:22:18</cachedUntil>
    </eveapi>



    Und mein Code dazu sieht so aus:
    $xml = simplexml_load_file(xml-datei);
    
    foreach ($xml->result->rowset->row as $row)
    {
        if (isset($row[0]->rawQuantity) == true)
        {
            echo $row[0]->rawQuantity;
        }
    }


    Ich nehme an, bei "rawQuantity" fehlt noch etwas....kann mir jemand auf die Sprünge helfen bitte? =)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    adelwoehrer schrieb:
    Ich nehme an, bei "rawQuantity" fehlt noch etwas....kann mir jemand auf die Sprünge helfen bitte? =)
    Du hast in deinem XML-Dokument Fehler. Du hast ein paar mal vergessen, dass <tag> nicht das gleiche wie <tag/> ist...
    Hier das ausgebesserte XML-Dokument:
    <eveapi version="2">
    	<currentTime>2012-04-20 15:36:02</currentTime>
    		<result>
    			<rowset name="assets" key="itemID" columns="itemID,locationID,typeID,quantity,flag,singleton">
    				<row itemID="206888503" locationID="60007168" typeID="1819" quantity="1" flag="4" singleton="0"/>
    				<row itemID="1252706043" locationID="60007168" typeID="967" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
    				<row itemID="1413217407" locationID="60007168" typeID="1318" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
    				<row itemID="1001594515266" locationID="60007168" typeID="11082" quantity="1" flag="4" singleton="0"/>
    				<row itemID="1001594519031" locationID="60007168" typeID="12207" quantity="1" flag="4" singleton="0"/>
    				<row itemID="1005669663551" locationID="60007168" typeID="587" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
    				<row itemID="1005697415058" locationID="60007168" typeID="22555" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
    				<row itemID="1005830297705" locationID="60007168" typeID="11488" quantity="1" flag="4" singleton="1" rawQuantity="-1"/>
    			</rowset>
    		</result>
    	<cachedUntil>2012-04-20 20:22:18</cachedUntil>
    </eveapi>
    Beim PHP musst du eins wissen:
    Kindelemente sind Objektvariablen, Attribute hingegen werden wie ein assoziatives Array angesprochen.

    Der ausgebesserte Code:
    $xml = simplexml_load_file(xml-datei);
    
    foreach($xml->result->rowset->row as $row) {
    	if(isset($row['rawQuantity'])) {
    		echo $row['rawQuantity'];
    	}
    }
  4. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Und funktioniert natürlich wie eine Eins. =)
    Ich habe Ewigkeiten danach gegoogelt, danke.

    Am Aufbau des XML-Dokumentes selbst kann ich leider nichts ändern, das ist eine API die ich von der Seite des Entwicklers beziehe.
    Aber es scheint trotz Fehler alles zu klappen.
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    adelwoehrer schrieb:
    Am Aufbau des XML-Dokumentes selbst kann ich leider nichts ändern, das ist eine API die ich von der Seite des Entwicklers beziehe.
    Aber es scheint trotz Fehler alles zu klappen.
    Immerhin ist es kein valides XML...
    Der Parser (
    simplexml_load_file()
    ) würde dir auch Warnungen werfen, nur sind die vermutlich deaktiviert worden (per .htaccess?).
  6. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Deaktiviert habe ich nichts.
    Da läuft einfach eine frische XAMPP Installation um das Script irgendwie testen zu können.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!