powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Баг xsd:sequence при выгрузке XML из DataSet
2 сообщений из 2, страница 1 из 1
Баг xsd:sequence при выгрузке XML из DataSet
    #33982258
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот разобрался в проблеме неправильного порядка вывода sequence в XML.

Собственно, схема:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:complexType name="typeB">
    <xs:sequence>
      <xs:element name="A1" type="typeA" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="C" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="typeA">
    <xs:attribute name="att1" type="xs:string" />
  </xs:complexType>
  <xs:element name="B" type="typeB" />
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="B" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Тип B должен содержать элементы A1 и C в указанной последовательности.

Выполним проверку данных, которые содержит DataSet:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
using System;
using System.Data;
using System.Xml;
using System.Xml.Schema;


namespace Test
{

  class Program
  {
    static void Main(string[] args)
    {

      DataSet ds = new DataSet();

      using (XmlReader reader = XmlReader.Create(@"schema.xsd"))
      {
        ds.ReadXmlSchema(reader);
      }

      ds.Tables["B"].Rows.Add(new object[] { "element C",  1  });
      ds.Tables["A1"].Rows.Add("attribute 1",  1 );

      XmlDataDocument doc = new XmlDataDocument(ds);
      using (XmlReader reader = XmlReader.Create(@"schema.xsd"))
      {
        XmlSchema schema = XmlSchema.Read(reader, null);
        doc.Schemas.Add(schema);
      }

      ds.WriteXml(@"out.xml");
      ds.WriteXmlSchema(@"out.xsd");

      try
      {
        doc.Validate(null);
      }
      catch (Exception e)
      {
        Console.Write(e);

        Console.ReadKey();
      }

    }
  }
}

Получаем ошибку.
Смотрим сохраненные файлы out.xml и out.xsd и обнаруживаем, что порядок следования элементов A1 и C сменился. Занавес.

Остается сообщить в Microsoft и дождаться результатов вскрытия.
...
Рейтинг: 0 / 0
Баг xsd:sequence при выгрузке XML из DataSet
    #33982268
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в догонку - забыл сказать, что у меня версия Framework 2.0.50727
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Баг xsd:sequence при выгрузке XML из DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]