مستند XML متداخل في مستند Simplexml
سؤال
أواجه مشكلة عند استخدام 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>";
}
لا تنتمي إلى StackOverflow