xml_parse_into_struct
En esta página
xml_parse_into_struct
Analiza una estructura XML
Descripción#
xml_parse_into_struct(XMLParser $parser, string $data, array $values, [array $index]): int
```php
Esta función analiza la cadena XML `data` y la coloca en dos arrays: el primero `index` contiene punteros a la posición de los valores correspondientes en el array `values`. Estos dos parámetros se pasan por referencia.
## Parámetros
`parser`
Una referencia a un analizador XML.
`data`
Un string que contiene los datos XML.
`values`
Un array que contiene los valores de los datos XML.
`index`
Un array que contiene los punteros a los valores apropiados en el parámetro \$values.
## Valores devueltos
`xml_parse_into_struct` retorna 0 si ocurre un error y 1 en caso de éxito. Esto no es lo mismo que `false` y `true`, por lo que se debe tener precaución con los operadores como ===.
## Historial de cambios
| Versión | Descripción |
|----|----|
| 8.0.0 | `parser` ahora espera una instancia de `XMLParser` ; anteriormente, se esperaba un recurso `xml` de tipo `resource` válido. |
## Ejemplos
A continuación, se encuentra un ejemplo que ilustra la estructura de los dos arrays generados por la función. Se utiliza una etiqueta simple `note`, colocada dentro de otra etiqueta `para`. Se analiza todo y se muestra la estructura generada:
Ejemplo con `xml_parse_into_struct`
Mostrará:
Array Index
Array
(
[PARA] => Array
(
[0] => 0
[1] => 2
)
[NOTE] => Array
(
[0] => 1
)
)
Array Vals
Array
(
[0] => Array
(
[tag] => PARA
[type] => open
[level] => 1
)
[1] => Array
(
[tag] => NOTE
[type] => complete
[level] => 2
[value] => simple note
)
[2] => Array
(
[tag] => PARA
[type] => close
[level] => 1
)
)
El análisis basado en eventos (como el de expat) puede resultar complejo cuando el documento XML es complejo. `xml_parse_into_struct` no genera objetos de tipo DOM, sino que genera estructuras que pueden ser recorridas de manera similar a un árbol. Consideremos el siguiente fichero, que representa una pequeña base de datos XML:
moldb.xml - Pequeña base de datos molecular
A
K
Y ahora, un código que analiza el documento y genera los objetos correspondientes:
parsemoldb.php: Analiza moldb.xml y crea un array de objetos moleculares
```php
Tras la ejecución de parsemoldb.php, la variable $db contiene un array de objetos AminoAcid, y la salida lo confirma:
** Base de objetos AminoAcid:
Array
(
[0] => aminoacid Object
(
[name] => Alanine
[symbol] => ala
[code] => A
[type] => hydrophobic
)
[1] => aminoacid Object
(
[name] => Lysine
[symbol] => lys
[code] => K
[type] => charged
)
)