Salesforce在Visualforce报告中使用XML并显示数据

时间:2010-11-05 14:43:57

标签: xml salesforce apex-code visualforce

首先,这个问题需要一些介绍,所以请耐心等待。

高级别是我连接到外部Web服务,它将一些XML返回到我的apex控制器。我的想法是,我想在VisualForce页面中显示返回到一个漂亮的表格格式的XML。回来的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)除了编写自己的自定义对象以映射VF之外,是否有更简单/更好的方式来使用XML?

对所有建议开放。我真的希望有一种比自己构建HTML表更好的方法,因为那时我还要处理样式和对齐等等。谢谢。

1 个答案:

答案 0 :(得分:1)

由于您将XML直接返回给控制器,因此需要为每个XML节点定义并使用包装类,其中包含属性(甚至是未定义行长度的附加集合)。通常需要做的是显示来自多个对象的表格数据。包装器对象的集合将允许您迭代它们,并使用点表示法来访问类中的字段。