Frage

Ich habe die folgende XML-Struktur:

<?xml version="1.0" ?>
<course xml:lang="nl">
  <body>
    <item id="787900813228567" view="12000" title="0x|Beschrijving" engtitle="0x|Description"><![CDATA[Dit college leert studenten hoe ze een onderzoek kunn$
    <item id="5453116633894965" view="12000" title="0x|Onderwijsvorm" engtitle="0x|Method of instruction"><![CDATA[instructiecollege]]></item>
    <item id="7433550075448316" view="12000" title="0x|Toetsing" engtitle="0x|Examination"><![CDATA[Opdrachten/werkstuk]]></item>
    <item id="015071401858970545" view="12000" title="0x|Literatuur" engtitle="0x|Required reading"><![CDATA[Wayne C. Booth, Gregory G. Colomb, Joseph M. Wi$
    <item id="5960589172957031" view="12000" title="0x|Uitbreiding" engtitle="0x|Expansion"><![CDATA[]]></item>
    <item id="3610066867901779" view="12000" title="0x|Aansluiting" engtitle="0x|Place in study program"><![CDATA[]]></item>
    <item id="19232369892482925" view="12000" title="0x|Toegangseisen" engtitle="0x|Course requirements"><![CDATA[]]></item>
    <item id="3332396346891524" view="12000" title="0x|Doelgroep" engtitle="0x|Target audience"><![CDATA[]]></item>
    <item id="6606851872934866" view="12000" title="0x|Aanmelden bij" engtitle="0x|Enrollment at"><![CDATA[]]></item>
    <item id="1478643580820973" view="12000" title="0x|Informatie bij" engtitle="0x|Information at"><![CDATA[Docent]]></item>
    <item id="9710608434763993" view="12000" title="0x|Rooster" engtitle="0x|Schedule"><![CDATA[1e semester, maandag 15.00-17.00, zaal 1175/030]]></item>
  </body>
</course>

Ich möchte die Daten von einem der Artikel-Tags erhalten. Um zu diesem Tag zu bekommen, verwende ich die folgende XPath:

$description = $xml->xpath("//item[@title='0x|Beschrijving']");

Das in der Tat eine Reihe in Form von zurückgibt:

Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [id] => 787900813228567
                    [view] => 12000
                    [title] => 0x|Beschrijving
                    [engtitle] => 0x|Description
                )
        )
)

Aber wo ist die eigentliche Information (dh zwischen den Element-Tags gespeichert ist) liegt Ich muss etwas falsch sein, aber ich kann nicht herausfinden, was das sein könnte ... Wahrscheinlich etwas wirklich einfach ... Hilfe würde geschätzt.

War es hilfreich?

Lösung

Wenn Sie die XML-Datei laden, müssen Sie die CDATA .. Dieses Beispiel funktioniert behandeln:

<?php
$xml = simplexml_load_file('file.xml', NULL, LIBXML_NOCDATA);
$description = $xml->xpath("//item[@title='0x|Beschrijving']");
var_dump($description);
?>

Hier ist der Ausgang:

array(1) {
  [0]=>
  object(SimpleXMLElement)#2 (2) {
    ["@attributes"]=>
    array(4) {
      ["id"]=>
      string(15) "787900813228567"
      ["view"]=>
      string(5) "12000"
      ["title"]=>
      string(15) "0x|Beschrijving"
      ["engtitle"]=>
      string(14) "0x|Description"
    }
    [0]=>
    string(41) "Dit college leert studenten hoe ze een on"
  }
}

Andere Tipps

Ich glaube, sein entspricht die __toString () Methode für das Objekt, so

echo $description[0];

Sollte es angezeigt, oder Sie können es gegossen;

$str = (string) $description[0];

Werfen Sie einen Blick auf die PHP.net Dokumentation für "SimpleXMLElement" ( http://uk.php.net/manual/en/function.simplexml-element-children.php ) es sieht aus wie der Knoten Konvertierung in einen String "(String) Wert $;" funktioniert der Trick.

Gelingt das nicht, es gibt viele Beispiele auf dieser Seite ist, dass Sie in die richtige Richtung zeigen sollte!

$description = $xml->xpath("//item[@title='0x|Beschrijving']");

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

echo($node);

}

dreamwerx Lösung ist besser

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top