new - xml to array php
Selección de valor de atributo en SimpleXML (2)
¿Por qué no puedo filtrar los resultados en el valor del atributo en lugar del filtro?
Algo como esto falla.
foreach ($portfolio->clientGroup[$id]->client[''name=foo'']->src as $src) {
echo $src . ''<br />'';
}
Pero esto funciona
foreach ($portfolio->clientGroup[$id]->client[0]->src as $src) {
echo $src . ''<br />'';
}
Esto no funciona porque SimpleXML es una implementación liviana. Además, no puede suponer que algo funcione a menos que tenga una especificación.
Está buscando la función xpath de los objetos SimpleXMLElement
, es decir:
foreach ($portfolio->clientGroup[$id]->xpath("client[@name=''foo'']/src") as $src) {
echo $src . ''<br />'';
}
SimpleXML proporciona acceso a su documento en forma de una matriz anidada. No hay forma de colocar una expresión XPath como el índice de matriz.
Pruebe algo como:
$query = "client[@name=''foo'']/src"; // if name is an attribute
$query = "client[name=''foo'']/src"; // if name is a child element
foreach ($portfolio->clientGroup[$id]->xpath($query) as $src ) {
echo $src . ''<br />'';
}