PDA

View Full Version : مشکل xml



olampiad
پنج شنبه 25 مهر 1392, 14:11 عصر
سلام
لطفا به این تصویر یه نگا بندازید
http://s4.picofile.com/file/7973839993/sdre.png
من از یه فایل xml و که تو بالا نشونتون دادم یه print_r گرفتم.
حالا من می خوام به اجزای اون دسترسی داشته باشم.
این کد رو نوشتم


<?php
require_once('WSC_Statistics.php');
$yy=simplexml_load_file('WSC-Results.xml');
print_r($yy[result]);
?>

ولی اطلاعات رو بیرون در نیاورد.
چه جوری می تونم به اطلاعات اون دسترسی داشته باشم.
ممنون

olampiad
پنج شنبه 25 مهر 1392, 14:39 عصر
تورو خدا کمکم کنید
کارم خیلی فوریه

MostafaEs3
پنج شنبه 25 مهر 1392, 15:45 عصر
//////////

olampiad
پنج شنبه 25 مهر 1392, 16:15 عصر
ممنون
این کدی رو که گفتین کار کرد
حالا من می خوام به country-iso دسترسی داشته باشم
این کد رو هم می نویسم ارور می ده.


<?php
$xml = simplexml_load_file('WSC-Results.xml');
//print_r($xml);
foreach ($xml->result as $result) {
echo $result->country-iso . " \n";
}
?>

بی نهایت ممنون

olampiad
پنج شنبه 25 مهر 1392, 16:16 عصر
تورو خدا کمکم کنید
کارم خیلی فوریه

ابوذر محمودی
پنج شنبه 25 مهر 1392, 16:33 عصر
بهتره ساختار خود فایل xml رو بذارین تا شکل آرایه ای اون.اینطوری معلوم نیست کدوم والده کدوم فرزند...
اینو ببینین :
برای استخراج محتویات xml زیر :
<songs>
<song dateplayed="2011-07-24 19:40:26">
<title>I left my heart on Europa</title>
<artist>Ship of Nomads</artist>
</song>
<song dateplayed="2011-07-24 19:27:42">
<title>Oh Ganymede</title>
<artist>Beefachanga</artist>
</song>
<song dateplayed="2011-07-24 19:23:50">
<title>Kallichore</title>
<artist>Jewitt K. Sheppard</artist>
</song>
</songs>


میتونید اینطوری عمل کنید ، حالا اینو تعمیم بدین و طبق ساختار فایل خودتون کدتونو بنویسین.


<?php
$mysongs = simplexml_load_file('songs.xml');
echo "<ul id="songlist">n";
foreach ($mysongs as $songinfo):
$title=$songinfo->title;
$artist=$songinfo->artist;
$date=$songinfo['dateplayed'];
echo "<li><div class="title">",$title,"</div><div class="artist">by ",$artist,"</div><time>",$date,"</time></li>n";
endforeach;
echo "</ul>";
?>
راهنمایی بیشتر:
http://blog.teamtreehouse.com/how-to-parse-xml-with-php5
http://www.sitepoint.com/parsing-xml-with-simplexml/

olampiad
پنج شنبه 25 مهر 1392, 17:02 عصر
سلام
اینم خود فایل xml
من می خوام از روی این به iso و name-en دسترسی داشته باشم.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wsc-countrys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<country>
<iso>AE</iso>
<name-en>United Arab Emirates</name-en>
</country>
<country>
<iso>AT</iso>
<name-en>Austria</name-en>
</country>
<country>
<iso>AU</iso>
<name-en>Australia</name-en>
</country>
<country>
<iso>BE</iso>
<name-en>Belgium</name-en>
</country>
<country>
<iso>BR</iso>
<name-en>Brazil</name-en>
</country>
<country>
<iso>CA</iso>
<name-en>Canada</name-en>
</country>
<country>
<iso>CH</iso>
<name-en>Switzerland</name-en>
</country>

ممنون

MostafaEs3
پنج شنبه 25 مهر 1392, 17:57 عصر
//////////

olampiad
پنج شنبه 25 مهر 1392, 20:47 عصر
سلام
ببخشین iso هارو نشون می ده.
ولی name-en رو نشون نمده.
این ارور رو می ده
http://s2.picofile.com/file/7974217953/ha.png
ممنون

olampiad
پنج شنبه 25 مهر 1392, 21:27 عصر
به نظرتون مشکلم کجاست

ابوذر محمودی
پنج شنبه 25 مهر 1392, 21:30 عصر
تو فایل xml به جای "-" تو name-en از "_" استفاده کن یا کلا اسمتو عوض کن ، تو کد هم از نام جدید استفاده کن

olampiad
پنج شنبه 25 مهر 1392, 21:36 عصر
تورو خدا کمکم کنید
کارم خیلی فوریه
بی نهایت ممنون

MostafaEs3
پنج شنبه 25 مهر 1392, 21:45 عصر
//////////

olampiad
جمعه 26 مهر 1392, 10:20 صبح
سلام
به این کد یه نگا بندازید

<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>TW</country-iso>
<medal>GOLD</medal>
<score>544</score>
</result>
<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>AT</country-iso>
<medal>SILVER</medal>
<score>538</score>
</result>
<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>CH</country-iso>
<medal>BRONZE</medal>
<score>522</score>
</result>
<result>



من این کد رو واسه کد بالا نوشتم.


if(isset($_POST['showMedals'])){
$contry_id=$_POST['countrys'];
foreach($res->result as $con){
echo $con->country-iso==$contry_id;
}
}



من می خوام تمام country-iso که با $contry_id مساوی هستند رو echo کنم.
مثلا من می خوام تمام country-iso هایی که مساوی AT هستند رو نمایش دهم.
کد بالایی رو نوشتم ولی کار نکرد.ارور می ده
اشکالش کجاست.
ممنون

AliRezaPro
جمعه 26 مهر 1392, 11:10 صبح
دوست عزیز بطور جدی حتما در مورد دستور های شرطی تحقیق کنید .

if($con->country-iso==$contry_id){
echo $con->country-iso;
}

olampiad
شنبه 27 مهر 1392, 16:02 عصر
سلام

کد 1


<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>TW</country-iso>
<medal>GOLD</medal>
<score>544</score>
</result>
<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>AT</country-iso>
<medal>SILVER</medal>
<score>538</score>
</result>
<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>CH</country-iso>
<medal>BRONZE</medal>
<score>522</score>
</result>
<result>
<year>2009</year>
<skill-number>01</skill-number>
<country-iso>BR</country-iso>
<medal>Medallion For Excellence</medal>
<score>513</score>
</result>



کد2


<skill>
<number>D1</number>
<name-en>Aircraft Maintenance</name-en>
</skill>
<skill>
<number>13</number>
<name-en>Autobody Repair</name-en>
</skill>
<skill>
<number>33</number>
<name-en>Automobile Technology</name-en>
</skill>
<skill>
<number>D4</number>
<name-en>Bakery</name-en>
</skill>
<skill>
<number>30</number>
<name-en>Beauty Therapy</name-en>
</skill>
<skill>
<number>20</number>
<name-en>Bricklaying</name-en>
</skill>
<skill>
<number>24</number>
<name-en>Cabinetmaking</name-en>
</skill>



ببخشین مشکل این کد چیه؟
من این کد رو واسه کد های بالا نوشتم ولی کار نمی کنه.
چیزی نمیاره
ممنون




$res=simplexml_load_file('WSC-Results.xml');
$skill=simplexml_load_file('WSC-Skills.xml');

if(isset($_POST['showMedals'])){
$contry_id=$_POST['countrys'];

foreach($res->result as $con){

if($con->{'country-iso'}==$contry_id){

$kk=$con->{'skill-number'};

if($skill->skill->number==$kk){
echo $skill->skill->number;
echo $skill->skill->{'name-en'};
}
}
}
}

olampiad
شنبه 27 مهر 1392, 16:04 عصر
مشکلش چیه؟
ممنون

AliRezaPro
شنبه 27 مهر 1392, 18:20 عصر
کد تصحیح شد .اگر منطق کارتون رو متوجه شده باشم چیزی نمی آورد چون شرط شما صدق نمیکند

$res=simplexml_load_file('WSC-Results.xml');
$skill=simplexml_load_file('WSC-Skills.xml');

foreach($res->result as $con){

if($con->{'country-iso'}==$contry_id){

$kk=$con->{'skill-number'};

foreach($skill->skill as $skill){
if($skill->{'number'} == $kk){
echo $skill->{'number'};
echo $skill->{'name-en'};
}
}
}
}

نوع نگارش فایل های xml جوری نیست که به این صورت خروجی بگیرید . خودتون شرط ها و محتویات فایل ها بررسی کنید متوجه می شوید . skill-number در فایل WSC-Results بدین صورت است {01} البته همه هم همین مقدار رو دارند. در صورتی که number در WSC-Skills به صورت {D1 و 13 و ..} است

olampiad
شنبه 27 مهر 1392, 19:22 عصر
سلام
ببخشین
خیلی کلافم کرده
این فایل پروِِژه است.
میشه خودتون یه نگا بندازید
http://s1.picofile.com/file/7976204622/khodam.rar.html
می شه یه نگا بندازید.
فایل هاش حدود 400kb
ممنون

olampiad
یک شنبه 28 مهر 1392, 09:40 صبح
تورو خدا کمکم کنید
کارم خیلی فوریه
بی نهایت ممنون

olampiad
یک شنبه 28 مهر 1392, 11:33 صبح
کسی مشکل این فایل رو پیدا نکرد
مــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـمـــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــنـــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــون

olampiad
یک شنبه 28 مهر 1392, 13:19 عصر
تورو خدا کمکم کنید
کارم خیلی فوریه
بی نهایت ممنون

olampiad
یک شنبه 28 مهر 1392, 16:30 عصر
یکی به دادم برسه

AliRezaPro
یک شنبه 28 مهر 1392, 17:25 عصر
دقیقا می خواهید چیکار کنید ؟
این شرط هرگز درست نخواهد بود :

if($skill->{'number'} == $kk){
خودتان بررسی کردید فایل ها رو

olampiad
یک شنبه 28 مهر 1392, 18:58 عصر
آره خیلی بررسی کردم
ولی بازم کار ساز نبود
ممنون