Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Генерирование контролов из XML

38K
18 августа 2013 года
Telsystems
20 / / 13.11.2012
Добрый день. Есть XML


Код:
<NewDataSet>
<OrganizationProperties>
    <OrganizationID>2118</OrganizationID>
    <FieldName>XMLTemplate</FieldName>

<FieldValue>
<billers  Col1Name="Key" Col2Name="Value">
    <MethodsList>
        <Method Name="строка вызова" type="Concatenate" ReadOnly="true" FieldName="@GMProp" Delimiter=""/>
    </MethodsList>
    <FieldsList>
        <Field label="ServiceId" Visible="false" Value="4"/>
        <Field label="@Prop" Visible="false" Value="msisdn=38" MethodName="строка вызова"/>
        <Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>
        <Field label="ФИО" Type="ФИО" Stored="F2"/>
        <Field label="@GMProp" ReadOnly="true" Visible="false"/>
        <Field label="Сумма пополнения" Type="Дробное число" IsObligatory="true" Summable="true" Long="10,2"/>
        <Field label="@доп" ReadOnly="true" Visible="false" Value="; " MethodName="строка вызова"/>
    </FieldsList>
</billers>
</FieldValue>
<FieldOwner>true</FieldOwner>
    </OrganizationProperties>
  </NewDataSet>
В <FieldsList> находятся список полей, которые должны отобразиться на форме, а именно


 
Код:
<Field label="Телефон" Type="Целое число" IsObligatory="true" Value="050" MethodName="строка вызова" Stored="F1" Long="10"/>

Должен бить TextBox с именем "Телефон", Text должен быть "050" и не превышать 10 симфолов.

и


 
Код:
<Field label="Сумма пополнения" Type="Дробное число" IsObligatory="true" Summable="true" Long="10,2"/>

Тоже TextBox с именем "Сумма пополнения"

Вопрос :

Есть ли какие-то паресеры, или как можно правильно сделать реализацию такого задания?

Спасибо.
62K
09 сентября 2013 года
Cyberatino
24 / / 06.03.2012
Напишите классы, отображающие структуры вашего xml на код:


Код:
public class FieldValue
{
}

public class billers
{
}

public class MethodList : IList<Method>
{

}
и тд. FieldValue содержит поля (или свойства), например, поле public billers billers. Пометьте классы атрибутом [Serialazable]. Учтите, что свойства нельзя пометить как несериализуемые (в том случае, если вы хотите исключать какие-либо свойства из сериализации используйте вместо них поля). Пример восстановления объекта из xml-документа можно посмотреть тут.

Получив модели вам нужно динамически создавать контролы и привязывать их к делегатам событий на форму.
Псевдокод примерно такой
 
Код:
Form.Controls.Add(new ComboBox { Name = "Name", Items = new List<Item> { ... } });
414
21 августа 2013 года
CassandraDied
763 / / 24.05.2012
А стандартные парсеры .NET чем не подошли? Форму можно конструировать динамически, добавляя контролы по ходу парсинга.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог