У меня есть XML-канал, который имеет такой контент
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="propiedades.xsd" generated="2015-04-28T15:16:46"> <propiedades> <Descripcion>Excelente casa de dos pisos en condominio en la urbanización Santa Maria De Villa Club, en Carabayllo, con un AT:92m2 y un AC:113m2, cuenta con 3 iluminadas habitaciones, 3 baños, cochera, de estreno, con áreas verdes, piscina, cancha de fútbol, salones para actividades. ¡Para más información contactarse con nuestros agente!ID: 35751</Descripcion> <Foto1>http://img.ruphp.com/php/mini-35751 - 1.jpg</Foto1> <Foto2>http://img.ruphp.com/php/mini-35751 - 2.jpg</Foto2> <Foto3>http://img.ruphp.com/php/mini-35751 - 3.jpg</Foto3> <Foto4>http://img.ruphp.com/php/mini-35751 - 4.jpg</Foto4> <Foto5>http://img.ruphp.com/php/mini-35751 - 5.jpg</Foto5> <Foto6>http://img.ruphp.com/php/mini-35751 - 6.jpg</Foto6> <Foto7>http://img.ruphp.com/php/mini-35751 - 7.jpg</Foto7> <Foto8>http://img.ruphp.com/php/mini-35751 - 8.jpg</Foto8> </propiedades> </dataroot>
Я хотел знать, как я могу извлечь изображения, потому что у каждого изображения есть другое имя XML. как Fotos1,2,3 и т. д.
Вы можете использовать запрос xpath для назначения имен узлов, начинающихся с Foto
, а затем после получения этих узлов, а затем просто используйте foreach
:
$xml_string = '<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="propiedades.xsd" generated="2015-04-28T15:16:46"> <propiedades> <Descripcion>Excelente casa de dos pisos en condominio en la urbanización Santa Maria De Villa Club, en Carabayllo, con un AT:92m2 y un AC:113m2, cuenta con 3 iluminadas habitaciones, 3 baños, cochera, de estreno, con áreas verdes, piscina, cancha de fútbol, salones para actividades. ¡Para más información contactarse con nuestros agente!ID: 35751</Descripcion> <Foto1>http://img.ruphp.com/php/mini-35751 - 1.jpg</Foto1> <Foto2>http://img.ruphp.com/php/mini-35751 - 2.jpg</Foto2> <Foto3>http://img.ruphp.com/php/mini-35751 - 3.jpg</Foto3> <Foto4>http://img.ruphp.com/php/mini-35751 - 4.jpg</Foto4> <Foto5>http://img.ruphp.com/php/mini-35751 - 5.jpg</Foto5> <Foto6>http://img.ruphp.com/php/mini-35751 - 6.jpg</Foto6> <Foto7>http://img.ruphp.com/php/mini-35751 - 7.jpg</Foto7> <Foto8>http://img.ruphp.com/php/mini-35751 - 8.jpg</Foto8> </propiedades> </dataroot>'; $xml = simplexml_load_string($xml_string); $fotos = $xml->xpath('//*[substring(name(), 1, 4) = "Foto"]'); foreach($fotos as $foto) { echo $foto, '<br/>'; }
Образец вывода
Если вы не хотите использовать маршрут xpath, просто используйте ->getName
чтобы проверить имя узла и использовать обычные строковые функции PHP, чтобы проверить его:
$xml = simplexml_load_string($xml_string); foreach($xml->propiedades->children() as $element) { if(substr($element->getName(), 0, 4) === 'Foto') { echo $element, '<br/>'; } }
Образец вывода
Вы можете получить доступ к детям с помощью children()
Попробуйте под кодом:
<?php $s =<<<EOS <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="propiedades.xsd" generated="2015-04-28T15:16:46"> <propiedades> <Descripcion>Excelente casa de dos pisos en condominio en la urbanización Santa Maria De Villa Club, en Carabayllo, con un AT:92m2 y un AC:113m2, cuenta con 3 iluminadas habitaciones, 3 baños, cochera, de estreno, con áreas verdes, piscina, cancha de fútbol, salones para actividades. ¡Para más información contactarse con nuestros agente!ID: 35751</Descripcion> <Foto1>http://img.ruphp.com/php/mini-35751 - 1.jpg</Foto1> <Foto2>http://img.ruphp.com/php/mini-35751 - 2.jpg</Foto2> <Foto3>http://img.ruphp.com/php/mini-35751 - 3.jpg</Foto3> <Foto4>http://img.ruphp.com/php/mini-35751 - 4.jpg</Foto4> <Foto5>http://img.ruphp.com/php/mini-35751 - 5.jpg</Foto5> <Foto6>http://img.ruphp.com/php/mini-35751 - 6.jpg</Foto6> <Foto7>http://img.ruphp.com/php/mini-35751 - 7.jpg</Foto7> <Foto8>http://img.ruphp.com/php/mini-35751 - 8.jpg</Foto8> </propiedades> </dataroot> EOS; $xml = simplexml_load_string($s); foreach ($xml->propiedades as $element) { foreach($element->children() as $key => $val) { echo "{$key}: {$val}"; } } ?>
Да, вы можете это сделать,
$xml = simplexml_load_string($string);
поместите весь контент xml в строку,
и используйте ссылку здесь http://www.w3schools.com/php/func_simplexml_load_string.asp