سؤال

أولاً ، يتطلب هذا السؤال القليل من المقدمة ، لذا يرجى تحمل معي.

المستوى العالي هو أنني أتصل بخدمة ويب خارجية ستعيد بعض XML إلى وحدة تحكم Apex الخاصة بي. الفكرة هي أنني أريد عرض XML الذي تم إرجاعه إلى تنسيق جدولي لطيف في صفحة VisualForce. سيبدو تنسيق عودة XML شيئًا كهذا:

<Wrapper><reportTable name='table_id' title='Report Title'>
  <row>
    <Element1><![CDATA[campaign_id]]></Element1>
    <Element2><![CDATA[577373]]></Element2>
    <Element3><![CDATA[4129]]></Element3>
    <Element4 dataFormat='2' dataSuffix='%'><![CDATA[0.7151]]></Element4>
    <Element5><![CDATA[2010-04-04]]></Element5>
    <Element6><![CDATA[2010-05-03]]></Element6>
  </row>
</reportTable>

...

الآن أنا الآن أستخدم فئة الأداة المساعدة XMLDOM (تم تطويرها بواسطة SF لوظائف XML) لرسم خريطة هذه البيانات في كائن مخصص "ReportTable" الذي يحتوي على قائمة بالكائنات المخصصة "الصف". السبب في أنني أبنيها بهذه الطريقة هو أنني لا أعرف عدد العناصر التي ستكون في كل صف ، ولا عدد الصفوف.

تبدو صفحة Visualforce شيئًا من هذا القبيل:

<table><apex:repeat value="{!reportTables}" var="table">
  <apex:repeat value="{!table.rows}" var="row">
  <tr>
   <apex:repeat value="{!row.ColumnValue}" var="column">
    <apex:repeat value="{!column}" var="value">
     <td>
     <apex:outputText value="{!value}" />
     </td>
    </apex:repeat>
   </apex:repeat>
   </tr>
  </apex:repeat>

الأسئلة هي:

1) هل يبدو هذا بمثابة نهج جيد للمشكلة؟

2) هل هناك طريقة أبسط/أفضل لاستهلاك XML إلى جانب كتابة الكائنات المخصصة الخاصة بي لتعيين VF إلى؟

مفتوح لأي وجميع الاقتراحات. آمل حقًا أن تكون هناك طريقة أفضل من بناء طاولة HTML بنفسي ، حيث يتعين علي أيضًا التعامل مع التصميم والمحاذاة وما إلى ذلك.

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

المحلول

نظرًا لأنك تعيد XML مباشرة إلى وحدة التحكم الخاصة بك ، وتحديد فئة Wrapper واستخدمها ، مع خصائص (حتى مجموعات إضافية لأطوال الصف غير المحددة) لكل عقدة XML المطلوبة. غالبًا ما يكون ما يجب القيام به لعرض البيانات الجدولية من جميع كائنات متعددة. ستتيح لك مجموعة من كائنات Wrapper التكرار عليها ، واستخدام ترميز DOT للوصول إلى الحقول في الفصل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top