Здравствуйте, VladD2, Вы писали:
VD>А зачем все так сложно? Почему просто не читать и писать данные средствами самого датасета? В смысле DataSet.WriteXml/DataSet.ReadXml...
По всей видимости из-за:
Public Events
NodeChanged (inherited from XmlDocument) Occurs when the Value of a node belonging to this document has been changed.
NodeChanging (inherited from XmlDocument) Occurs when the Value of a node belonging to this document is about to be changed.
NodeInserted (inherited from XmlDocument) Occurs when a node belonging to this document has been inserted into another node.
NodeInserting (inherited from XmlDocument) Occurs when a node belonging to this document is about to be inserted into another node.
NodeRemoved (inherited from XmlDocument) Occurs when a node belonging to this document has been removed from its parent.
NodeRemoving (inherited from XmlDocument)
или
SelectNodes (inherited from XmlNode
И для других вещей мне удобнее использовать XmlDataDocument. В принципе можно просто изменить xsd и все будет нормально (работать будет), но уж больно это плохо выглядит...
<string fullname="сюда и далее вписать данные" unit="и сюда">
</string>
DM>> Что понятно схеме уже не соответствует, и вообще криво и некрасиво.
А>А в чем разница, и в чем заключается несоответствие схеме?
Разница в том, что второй вариант по всей видимости имеет InnerText равный \n или еще какой-то чепухе типа того.
Да в основном это можно было бы игнорировать, но уж больно криво смотрится, нарушается эстетика А это значит, что элемент имеет тип и пошло поехало. Но главное — не красиво
DM> <string fullname="Припой ПОС 61 0023-00-00-000 21931-76" unit="кг" />
DM>Она полностью соответствует схеме. Далее мы загружаем этот xml в datagrid
DM>Получаем на выходе: DM> <string fullname="сюда и далее вписать данные" unit="и сюда"> DM> </string>
DM> Что понятно схеме уже не соответствует, и вообще криво и некрасиво.
А в чём состоит несоответствие схеме? Насколько я могу догадаться, fullname — это строка, и unit — строка. Вообще, DataSet поддерживает не все примочки схем. Возможно, у тебя тип данных unit — это какое-то перечисление. Но в таблицах ADO.NET нет возможности задать тип "перечисление".
... << RSDN@Home 1.1 beta 1 >>
Re[2]: Сопряжение DataGrid и XML (XmlDataDocument)
Здравствуйте, mihailik, Вы писали:
DM>> <string fullname="Припой ПОС 61 0023-00-00-000 21931-76" unit="кг" />
DM>> Что понятно схеме уже не соответствует, и вообще криво и некрасиво.
M>А в чём состоит несоответствие схеме? Насколько я могу догадаться, fullname — это строка, и unit — строка. Вообще, DataSet поддерживает не все примочки схем.
XmlValidatingReader
Тем не менее его хватает, что бы вылетать по исключению
DM>>> <string fullname="сюда и далее вписать данные" unit="и сюда">
DM>>> </string>
А>>
DM>>> Что понятно схеме уже не соответствует, и вообще криво и некрасиво.
А>>А в чем разница, и в чем заключается несоответствие схеме?
DM>Разница в том, что в InnerText данного элемента стоит 00 0D 00 0A 00 20 00 20 00 Кто его просил там быть?
Это ignorable whitespace — данных там нет. Первый и второй варианты идентичны.
Что же касается эстетики, то тут ничего не попишешь...
Re[4]: Сопряжение DataGrid и XML (XmlDataDocument)
DM>>>> <string fullname="сюда и далее вписать данные" unit="и сюда">
DM>>>> </string>
А>>>
DM>>>> Что понятно схеме уже не соответствует, и вообще криво и некрасиво.
А>>>А в чем разница, и в чем заключается несоответствие схеме?
DM>>Разница в том, что в InnerText данного элемента стоит 00 0D 00 0A 00 20 00 20 00 Кто его просил там быть?
А>Это ignorable whitespace — данных там нет. Первый и второй варианты идентичны.
А>Что же касается эстетики, то тут ничего не попишешь...
Оказалось, что попиешь... Если отказаться от использования doc.Save("file") и использовать doc.DataSet.WriteXml("file") то все нормально и васякие там ignorable whitespace и в некоторых вариантах левые атрибуты не создаются и все нормально. То есть мы получаем разный файл в результате этих методов
... << RSDN@Home 1.1 beta 1 >>
Re[3]: Сопряжение DataGrid и XML (XmlDataDocument)
DM>Вообще-то проблема не в том, что бы не вылетало. Можно схему поправить и все будет работать как надо. Проблема в том, что некрасиво
Тогда имеет смысл взять .NET Reflector и посмотреть в исходниках, как там DataSet пишется в XML.
Если они явно вставляют начало/конец элемента, то без пост-обработки XML не обойтись. А если это какой-нибудь промежуточный XmlWriter делает, можно попытаться его переопределить.
Хотя проще всего-таки забить. Добро пожаловать в мир Микрософта