Tengo problemas para acceder a la @attribute
sección de mi objeto SimpleXML. Cuando var_dump
obtengo el objeto completo, obtengo la salida correcta, y cuando obtengo el var_dump
resto del objeto (las etiquetas anidadas), obtengo la salida correcta, pero cuando sigo los documentos y var_dump
$xml->OFFICE->{'@attributes'}
, obtengo un objeto vacío, a pesar del hecho de que el primero var_dump
muestra claramente que hay atributos para generar.
¿Alguien sabe qué estoy haciendo mal aquí / cómo puedo hacer que esto funcione?
Respuestas:
Puede obtener los atributos de un elemento XML llamando a la función atributos () en un nodo XML. Luego puede var_dump el valor de retorno de la función.
Más información en php.net http://php.net/simplexmlelement.attributes
Código de ejemplo de esa página:
fuente
$b
será unSimpleXMLElement
objeto asíprint_r
yvar_dump
te dará cosas raras. Puedes lanzarlo como una cuerda (o lo que quieras) para evitar esto.Prueba esto
fuente
attributes()
al objeto correspondiente a la etiqueta correcta en su XML. Como si lo<root><tag attr="a">b</tag></root>
hiciera,$xml->tag->attributes()->attr
debe hacerlo para acceder a él.Usé antes tantas veces para obtener
@attributes
como abajo y fue un poco más largo.Debería ser más fácil y puede obtener atributos siguiendo el formato solo a la vez:
Modo estándar: atributos de acceso a la matriz (AAA)
Otras alternativas son:
Formato correcto y rápido
Formatos incorrectos
fuente
$xml->attributes()->{'field'}
,$xml->attributes()->field
, y$f='field'; $xml->attributes()->$f;
son los mismos. No ve ninguna razón por la que uno sea un formato correcto y otro incorrecto.Utilice
SimpleXMLElement::attributes
.La verdad es que el
get_properties
controlador SimpleXMLElement se encuentra a lo grande. No hay una propiedad llamada "@attributes", por lo que no puede hacerlo$sxml->elem->{"@attributes"}["attrib"]
.fuente
get_properties
controlador). Muy interesante.Puedes simplemente hacer:
fuente
Sin embargo, si está buscando una lista de estos atributos, XPath será su amigo
fuente
Me ayudó a convertir el resultado de simplexml_load_file ($ file) en una estructura JSON y volver a decodificarlo:
fuente
Desafortunadamente, tengo una compilación única (atascada con Gentoo por el momento) de PHP 5.5, y lo que encontré fue que
fue la única solución que funcionó. Probé todos los métodos de Bora anteriores, incluido el formato 'Correcto y rápido', y todos fallaron.
El hecho de que este sea el formato más fácil es una ventaja, pero no disfruté pensando que estaba loco probando todos los formatos que otros decían que funcionaban.
Njoy por lo que vale (¿mencioné una construcción única?).
fuente