2つのオプションがあります:
オプション1
前の回答とは異なるアプローチ:実際のXMLファイルを見ると、同じ説明が個々のタグで囲まれていることもわかります。
<yweather:condition text="Fair" code="34" temp="84" date="Tue, 29 May 2012 6:49 pm EDT" />
<yweather:forecast day="Tue" date="29 May 2012" low="70" high="86" text="Partly Cloudy" code="30" />
<yweather:forecast day="Wed" date="30 May 2012" low="64" high="85" text="Scattered Thunderstorms" code="38" />
<yweather:forecast day="Thu" date="31 May 2012" low="56" high="75" text="Partly Cloudy" code="30" />
<yweather:forecast day="Fri" date="1 Jun 2012" low="63" high="69" text="Partly Cloudy" code="30" />
<yweather:forecast day="Sat" date="2 Jun 2012" low="59" high="70" text="Showers" code="11" />
このすべてのデータを個別にクエリして、必要なHTMLタグですべてをラップできない理由はありません。
たとえば、属性から属性を取得するには、次のようにconditions
機能します。
<?php
$doc = new DOMDocument();
$doc->load('http://xml.weather.yahoo.com/forecastrss/10013_f.xml');
$channel = $doc->getElementsByTagName("channel");
foreach($channel as $chnl){
$item = $chnl->getElementsByTagName("item");
foreach($item as $itemgotten) {
$nodes = $itemgotten->getElementsByTagName('condition')->item(0);
if ($nodes->hasAttributes()) {
foreach ($nodes->attributes as $attr) {
$name = $attr->nodeName;
$value = $attr->nodeValue;
echo "Attribute '$name' :: '$value'<br />";
}
}
}
}
?>
オプション2
前の回答で提案されたアプローチを選択する場合は、説明内で使用されるHTMLタグのみを使用できることを忘れないでください(PHP内であらゆる種類の文字列操作を行う場合を除く)が、これらのタグを使用/スタイル設定することはできますCSSでカスケードスタイルを使用する:
div.description { /*general div styles*/ }
div.description b { /*styles for anything within a b tag in the description div*/ }
...
...等々