2010-11-05 2 views
1

Во-первых, этот вопрос требует немного введения, поэтому, пожалуйста, несите меня.Salesforce, потребляющее XML и отображаемые данные в отчете Visualforce

Высокий уровень - это то, что я подключаюсь к внешней веб-службе, которая вернет некоторый XML в мой контроллер вершины. Идея состоит в том, что я хочу отобразить 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, так как тогда мне также приходится иметь дело с стилями и выравниванием и т. Д. Спасибо.

+0

Вы поднимаете очень хороший вопрос. У моей коллеги есть аналогичная проблема, и я полностью в тупике. Надеюсь, кто-то придумает решение. – luckytaxi

ответ

1

Поскольку вы возвращаете XML непосредственно на свой контроллер, определите и используйте класс-оболочку со свойствами (даже дополнительные коллекции для неопределенных длин строк) для каждого узла XML. Часто необходимо сделать, чтобы отображать табличные данные из нескольких объектов. Коллекция ваших объектов-оберток позволит вам перебирать их и использовать точечную нотацию для доступа к полям в классе.

+1

Хорошо спасибо за ввод, это по сути то, что я сейчас делаю, это просто показалось мне немного утомительным. – JavaKungFu

Смежные вопросы