2014-11-14 2 views
0

У меня есть xml-схема от стороннего поставщика веб-услуг.Как проверить, возвращен ли элемент с MinOccurs = 0?

<xsd:element name="Student"> 
<xs:sequence> 
    <xs:element name="Name" type="xs:string" minOccurs="1"/> 
    <xs:element name="Address" type="xs:string" minOccurs="0"/> 
    <xs:element name="Gender" type="xs:string" minOccurs="1"/> 
</xs:sequence> 
</xsd:element> 

Я собираюсь использовать данные набора данных из этой веб-службы в моем коде на C#. Поскольку адрес имеет значение minOccurs равным 0, это означает, что веб-служба может либо вернуть значение для адреса, либо не возвращать адрес. Например:

Scenario 1: 
<Student> 
<Name>Eddie</Name> 
<Gender>Male</Gender> 
</Student> 

Scenario 2: 
<Student> 
<Name>Alice</Name> 
<Address>White House</Address> 
<Gender>Female</Gender> 
</Student> 

Scenario 3: 
<Student> 
<Name>Jenny</Name> 
<Address></Address> 
<Gender>Female</Gender> 
</Student> 

Могу ли я узнать, как я могу проверить в своем коде C#, будет ли веб-служба возвращать адрес.

Для получения результата из Сценария 1, я хотел бы скрыть контактную часть из моей формы вместе.

Для получения результата из Сценария 2, я хотел бы отобразить контактную секцию в моей форме и показать адрес.

Для набора результатов из 3-го сценария, я хотел бы отобразить контактную секцию в моей форме, но в поле «Контакт» не указано поле «Адрес не указано».

Могу ли я узнать, могу ли я достичь этого?

Я знаю, что мы можем проверить, имеют ли элементы значение или isnull. Но как мы проверяем, содержит ли результат, возвращаемый веб-службой, элемент (сценарий 1)?

ответ

0

После некоторых исследований и испытаний сделано, я думаю, что могу что-то вроде этого:

bool ShowContactFlag = false; 
if (Dataset.Tables[0].Columns.Contains("Address")) 
{    
    ShowContactFlag = true; 
} 
else 
{ 
    ShowContactFlag = false; 
} 
Смежные вопросы