php - online - Análisis de XMLA para obtener múltiples atributos
extraer datos de xml (1)
Pruebe PHP DOMDocument para XML Parser. Consulte la URL siguiente para obtener la etiqueta y el valor del atributo.
http://www.php.net/manual/en/domdocument.getelementsbytagname.php
$objDOM = new DOMDocument(''1.0'');
$objDOM->preserveWhiteSpace = false;
$objDOM->loadXML($xml);
Tengo el siguiente XML del que necesito analizar los valores.
<ads>
<ad id="987654321">
<price>
<currency-iso-code>
<value localized-label="£">GBP</value>
</currency-iso-code>
<amount>345</amount>
</price>
<price_frequency>
<value>WEEKLY</value>
</price_frequency>
<title>This is the Title</title>
<description>
Description
</description>
<ad_status>
<value>ACTIVE</value>
</ad_status>
<email>EXIST</email>
<user-id>123456</user-id>
<phone>123456</phone>
<modification-date-time>2013-09-02T11:40:41.000+01:00</modification-date-time>
<start-date-time>2013-09-02T11:40:39.000+01:00</start-date-time>
<features_active>
<category id="3">
<id-name>category-name</id-name>
<localized-name>Category name</localized-name>
</category>
<locations>
<location id="10000392">
<id-name>uk</id-name>
<localized-name>United Kingdom</localized-name>
</location>
</locations>
<neighborhood>Neighbourhood Name</neighborhood>
<attributes>
<attribute localized-label="Seller type" type="ENUM" name="seller_type">
<value localized-label="Agency">trade</value>
</attribute>
<attribute localized-label="Property type" type="ENUM" name="property_type">
<value localized-label="Flat">flat</value>
</attribute>
<attribute localized-label="Number of beds" type="LONG" name="property_number_beds">
<value>1</value>
</attribute>
<attribute localized-label="Date available" type="DATETIME" name="available_date">
<value localized-label="15/05/2013">2013-05-15T00:00:00.000+01:00</value>
</attribute>
</attributes>
<link rel="self" href="https://api2.domain.com/api/ads/987654321">
<link rel="self-user" href="https://api2.domain.com/api/users/123456/ads/987654321">
<public_link href="http://domain.com/public_facing_link">
<pictures>
<picture>
<link rel="extrabig" href="http://domain.com/images/80.JPG">
<link rel="preview" href="http://domain.com/images/81.JPG">
<link rel="big" href="http://domain.com/images/79.JPG">
<link rel="thumb" href="http://domain.com/images/78.JPG">
<link rel="moreadsthumb" href="http://domain.com/images/77.JPG">
</picture>
<picture>
<link rel="extrabig" href="http://domain.com/images/80.JPG">
<link rel="preview" href="http://domain.com/images/81.JPG">
<link rel="big" href="http://domain.com/images/79.JPG">
<link rel="thumb" href="http://domain.com/images/78.JPG">
<link rel="moreadsthumb" href="http://domain.com/images/77.JPG">
</picture>
</pictures>
</public_link>
</features_active>
</ad>
</ads>
Necesito extraer los siguientes datos de este xml
Título, descripción: fácil enoguht para tirar. Hecho ellos
También necesito public_link href y el enlace href de imágenes para aquellos con rel = "thumb"
A través de la comprobación de numerosas publicaciones aquí y la documentación de php he encontrado algo como esto.
$ads = simplexml_load_string($xml);
foreach ($ads as $ad) {
$item[''price''] = $ad->price->amount;
$item[''title''] = $ad->title;
$link = simplexml_load_string($ad->features_active->public_link);
foreach($link->attributes() as $attr => $value) {
if($attr == ''href''){
$item[''link''] = $value;
}
}
$pics = simplexml_load_string($ad->features_active->public_link->pictures);
foreach($pics->picture[0]->attributes() as $attr => $value) {
if($attr == ''thumb''){
$item[''picture''] = $value;
}
}
echo "<br><br>" . $item[''price''];
echo "<br>" . $item[''title''];
echo "<br>" . $item[''link''];
echo "<br>" . $item[''picture''];
}
Por alguna razón, no quiere tirar de los atributos. ¿Alguien puede señalarme en la dirección correcta para esto?