схема таблицы в datatable c#

#c#

#c#

Вопрос:

Как мне преобразовать схему в datatable на c#

 <header>
  <xs:schema id="header" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="header" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Table">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="id" type="xs:int" minOccurs="0" />
                <xs:element name="enteredon" type="xs:dateTime" minOccurs="0" />
                <xs:element name="enteredby" type="xs:string" minOccurs="0" />
                <xs:element name="remark" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
</header>
  

Пытаюсь выполнить этот код, но безуспешно:

  public static Stream StringToStream(string data)
 {
     try
     {
        System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
        StreamWriter writer = new StreamWriter(xmlStream);
        writer.Write(data);
        writer.Flush();
        return xmlStream;
     }
     catch (Exception)
     {
         return null;
     }
 }

table.ReadXmlSchema(StringToStream(saveData));
  

Комментарии:

1. Когда вы говорите «сбой», что именно вы имеете в виду? Выдает ли это исключение? Считывает ли он часть схемы? Происходит ли сбой без предупреждения и т.д.

Ответ №1:

Ваш код выдаст исключение «Корневой элемент отсутствует».

Я нашел решение в DaniWeb, которое заключается в добавлении приведенных ниже кодов для сброса позиции.

     System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    StreamWriter writer = new StreamWriter(xmlStream);
    writer.Write(data);
    writer.Flush();
    xmlStream.Position = 0;//Add this to reset the position of the stream.
  

Попробуйте еще раз.

Комментарии:

1. ты потрясающий, это именно та ошибка, которую я получал, и установка позиции в 0 сделала свое дело. Спасибо.