Pregunta

Tengo la siguiente estructura XML:

<?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>

Quiero obtener los datos de una de las etiquetas de elemento.Para llegar a esta etiqueta, yo uso el siguiente xpath:

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

Este hecho devolver una matriz en la forma de:

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

Pero, ¿dónde está la información real (que se almacena entre las etiquetas de elemento) que se encuentran?Debo estar haciendo algo mal, pero no puedo averiguar lo que podría ser...Probablemente algo muy simple...Ayuda sería apreciada.

¿Fue útil?

Solución

Cuando se carga el archivo XML, usted necesitará para manejar la CDATA..Este ejemplo funciona:

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

Aquí está el resultado:

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"
  }
}

Otros consejos

Creo que su equivalente al __método toString() en el objeto, por lo que

echo $description[0];

Deben mostrar, o puede lanzarla;

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

Echa un vistazo a la PHP.net documentación para "SimpleXMLElement" (http://uk.php.net/manual/en/function.simplexml-element-children.php) se parece a la conversión del nodo a un string "(cadena)$valor;" hace el truco.

En su defecto, hay un montón de ejemplos en que la página a la que debe apuntar en la dirección correcta!

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

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

echo($node);

}

dreamwerx solución es mejor

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top