XMLの属性にアクセスするのに問題があります。私のコードは以下の通りです。最初は2つのループがあり、これは問題なく機能していました。
最初に画像名を取得し、次に2番目のループを使用してストーリーの見出しとストーリーの詳細を取得します。次に、すべてをデータベースに挿入します。コードを整理して、ループを1つだけ使用したいと思います。私の画像名はHref属性に保存されています。()
サンプルXMLレイアウト(http://pastie.org/1850682)。XMLレイアウトは少し面倒なので、2つのループを使用する理由がありました。
$xml = new SimpleXMLElement('entertainment/Showbiz.xml', null, true);
// Get story images
//$i=0;
//$image = $xml->xpath('NewsItem/NewsComponent/NewsComponent/NewsComponent/NewsComponent/NewsComponent/ContentItem');
// foreach($image as $imageNode){
// $attributeArray = $imageNode->attributes();
// if ($attributeArray != ""){
// $imageArray[$i] = $attributeArray;
// $i++;
// }
//}
// Get story header & detail
$i=0;
$story = $xml->xpath('NewsItem/NewsComponent/NewsComponent/NewsComponent');
foreach($story as $contentItem){
//$dbImage = $imageArray[$i]['Href'];
foreach($contentItem->xpath('ContentItem/DataContent/nitf/body/body.head/hedline/hl1') as $headline){
$strDetail = "";
foreach($contentItem->xpath('ContentItem/DataContent/nitf/body/body.content/p') as $detail){
$strDetail .= '<p>'.$detail.'</p>';
foreach($contentItem->xpath('NewsComponent/NewsComponent/ContentItem') as $imageNode){
$dbImage = $imageNode->attributes();
}
}
$link = getUnique($headline);
$sql = "INSERT INTO tablename (headline, detail, image, link) VALUES ('".mysql_real_escape_string($headline)."', '".mysql_real_escape_string($strDetail)."', '".mysql_real_escape_string($dbImage)."', '".$link."')";
if (mysql_query($sql, $db) or die(mysql_error())){
echo "Loaded ";
}else{
echo "Not Loaded ";
}
}
$i++;
}
私はそれを手に入れようと思っています。4番目のネストされたforeachループにいくつかのechoステートメントを入れてみましたが、何も出ていませんでした。したがって、そのループは実行されません。私はこれに数時間いて、グーグルもしました、ただそれを得ることができません。
他のすべてが失敗した場合は、2つのループの使用に戻ります。
よろしく、スティーブン