سؤال

أواجه مشكلة عند استخدام simplexml لقراءة مستند xml الذي أعود إليه من مكالمة خدمة ويب.

قراءة البيانات جيدة ولكن تم استدعاء عقدة واحدة منطقة المستخدم يحتوي على مستند XML متداخل يحتوي على مساحات الأسماء.

من هذا السؤال في SO لقد نظرت في كيفية التعامل مع العقد الفرعية.ومع ذلك، عندما أقوم باستدعاء العقدة التي تحتوي على ملف XML المتداخل هذا، أحصل على قيمة فارغة.

تبدو البيانات كما يلي:

<UserArea>

 <rm:EngineVersion>4.2.0.62</rm:EngineVersion>

 <rm:DocumentFormat>305</rm:DocumentFormat>

 <rm:Industry>AUT</rm:Industry>

 <rm:Department>GEN</rm:Department>

 <rm:HighestDegree year="2004" major="COMPUTER PROGRAMMING">BACHELORS</rm:HighestDegree>

 <rm:ExperienceSummary>

  <rm:Experience>

    <rm:ExperienceKind>Summary</rm:ExperienceKind>

    <rm:Years>11</rm:Years>

    <rm:Detail>A total of 11 years of work experience.</rm:Detail>

  </rm:Experience>

  <rm:Experience>

    <rm:ExperienceKind>HighestIndustry</rm:ExperienceKind>

    <rm:Years>5</rm:Years>

    <rm:Industry>AUT</rm:Industry>

    <rm:Detail>Highest industry-related experience is 5 years in automotive      </rm:Detail>

  </rm:Experience>
 </rm:ExperienceSummary>
</UserArea>

لقد نفدت الأفكار لأن الكود:

foreach($myObject->UserArea->children as $userAreaXML){

   foreach($userAreaXML->ExperianceSummary as $summary){
      echo $summary->Detail;
   } 
}

فقط لا يعمل.

هل كانت مفيدة؟

المحلول

قد ترغب في القراءة http://www.sitepoint.com/blogs/2005/10/20/simplexml-and-namespaces/ ..لا يمكن شرحها بشكل أوضح.

نصائح أخرى

سيقوم هذا الرمز بطباعة التفاصيل

$experiences = $myObject->ExperienceSummary->Experience;

foreach($experiences as $experience) {
 echo $experience->Detail . "<br>";
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top