указание xsi:nil="true" и атрибутов в XmlElementAttribute
От: voladu  
Дата: 06.12.06 09:50
Оценка:
Здравствуйте!

Работаю в VS2003 — VB.Net.
Столкнулся с такой проблемой: При сериализации класса не могу присвоить в элементе XML документа
одному атрибуту значение null , а другому некоторое значение.
Сериализуемый класс
' объявление типа
Public Class IndTaxNumColumn
        <System.Xml.Serialization.XmlAttributeAttribute()> _
        Public ROWNUM As Integer

        <System.Xml.Serialization.XmlTextAttribute()> _
        Public Value As String     
    End Class

' кусок класса который сериализуется
 Public Class DBody
' .....................
     <System.Xml.Serialization.XmlElementAttribute("IndTaxNum", _
                  Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, _
                  IsNullable:=True)> _
            Public IndTaxNum() As IndTaxNumColumn
'.....................
End Class

То, в документ передается массив объектов IndTaxNumColumn, при этом не все значения Value заполняются.
Документ хранит таблицу, значит вид должен быть таким:
    <IndTaxNum ROWNUM="1" xsi:nil="true" />
    <IndTaxNum ROWNUM="2">345453<IndTaxNum/>
    <IndTaxNum ROWNUM="2">867567<IndTaxNum/>
    <IndTaxNum ROWNUM="4" xsi:nil="true" />
    <IndTaxNum ROWNUM="5">767567<IndTaxNum/>
.................

Однако, если задавать
Value = System.DBNull.Value.ToString

создается —
<IndTaxNum ROWNUM="1" />

если не передавать значение IndTaxNumColumn в массив, то
<IndTaxNum xsi:nil="true" />

Ни тот, ни другой вариант не подходят.
Как можно присвоить null переменной Value?

Заранее спасибо!
Re: указание xsi:nil="true" и атрибутов в XmlElementAttribut
От: Slg Россия  
Дата: 06.12.06 11:55
Оценка:
Здравствуйте, voladu, Вы писали:

V>Здравствуйте!


V>Работаю в VS2003 — VB.Net.

V>Столкнулся с такой проблемой: При сериализации класса не могу присвоить в элементе XML документа
...
не пробовали убрать из .DBNull.ToString — .ToString??
Re[2]: указание xsi:nil="true" и атрибутов в XmlElementAttri
От: voladu  
Дата: 06.12.06 12:11
Оценка:
Здравствуйте, Slg, Вы писали:

Slg>...

Slg>не пробовали убрать из .DBNull.ToString — .ToString??
Пробовал.
Value имеет тип String, если использовать System.DBNull.Value.ToString без .ToString
ругается

Value of type 'System.DBNull' cannot be converted to 'String'.

Re[3]: указание xsi:nil="true" и атрибутов в XmlElementAttri
От: Slg Россия  
Дата: 07.12.06 09:16
Оценка:
Здравствуйте, voladu, Вы писали:

V>Здравствуйте, Slg, Вы писали:


Slg>>...

Slg>>не пробовали убрать из .DBNull.ToString — .ToString??
V>Пробовал.
V>Value имеет тип String, если использовать System.DBNull.Value.ToString без .ToString
V> ругается
V>

Value of type 'System.DBNull' cannot be converted to 'String'.


тогда Nothing вместо System.DBNull.Value.ToString
Re[4]: указание xsi:nil="true" и атрибутов в XmlElementAttri
От: voladu  
Дата: 07.12.06 09:56
Оценка:
Здравствуйте, Slg, Вы писали:

Slg>тогда Nothing вместо System.DBNull.Value.ToString


Поставил. Получается все то же самое
<IndTaxNum ROWNUM="1" />
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.