Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Баг xsd:sequence при выгрузке XML из DataSet / 2 сообщений из 2, страница 1 из 1
12.09.2006, 19:32
    #33982258
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг xsd:sequence при выгрузке XML из DataSet
Вот разобрался в проблеме неправильного порядка вывода 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
12.09.2006, 19:38
    #33982268
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг xsd:sequence при выгрузке XML из DataSet
Да, в догонку - забыл сказать, что у меня версия Framework 2.0.50727
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Баг xsd:sequence при выгрузке XML из DataSet / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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