簡體   English   中英

在php中解析XML

[英]Parsing a xml in php

我有一個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://www.alfredograf.com/fotoprop/mini-35751%20-%201.jpg</Foto1>
<Foto2>http://www.alfredograf.com/fotoprop/mini-35751%20-%202.jpg</Foto2>
<Foto3>http://www.alfredograf.com/fotoprop/mini-35751%20-%203.jpg</Foto3>
<Foto4>http://www.alfredograf.com/fotoprop/mini-35751%20-%204.jpg</Foto4>
<Foto5>http://www.alfredograf.com/fotoprop/mini-35751%20-%205.jpg</Foto5>
<Foto6>http://www.alfredograf.com/fotoprop/mini-35751%20-%206.jpg</Foto6>
<Foto7>http://www.alfredograf.com/fotoprop/mini-35751%20-%207.jpg</Foto7>
<Foto8>http://www.alfredograf.com/fotoprop/mini-35751%20-%208.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://www.alfredograf.com/fotoprop/mini-35751%20-%201.jpg</Foto1>
<Foto2>http://www.alfredograf.com/fotoprop/mini-35751%20-%202.jpg</Foto2>
<Foto3>http://www.alfredograf.com/fotoprop/mini-35751%20-%203.jpg</Foto3>
<Foto4>http://www.alfredograf.com/fotoprop/mini-35751%20-%204.jpg</Foto4>
<Foto5>http://www.alfredograf.com/fotoprop/mini-35751%20-%205.jpg</Foto5>
<Foto6>http://www.alfredograf.com/fotoprop/mini-35751%20-%206.jpg</Foto6>
<Foto7>http://www.alfredograf.com/fotoprop/mini-35751%20-%207.jpg</Foto7>
<Foto8>http://www.alfredograf.com/fotoprop/mini-35751%20-%208.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://www.alfredograf.com/fotoprop/mini-35751%20-%201.jpg</Foto1>
<Foto2>http://www.alfredograf.com/fotoprop/mini-35751%20-%202.jpg</Foto2>
<Foto3>http://www.alfredograf.com/fotoprop/mini-35751%20-%203.jpg</Foto3>
<Foto4>http://www.alfredograf.com/fotoprop/mini-35751%20-%204.jpg</Foto4>
<Foto5>http://www.alfredograf.com/fotoprop/mini-35751%20-%205.jpg</Foto5>
<Foto6>http://www.alfredograf.com/fotoprop/mini-35751%20-%206.jpg</Foto6>
<Foto7>http://www.alfredograf.com/fotoprop/mini-35751%20-%207.jpg</Foto7>
<Foto8>http://www.alfredograf.com/fotoprop/mini-35751%20-%208.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM