2011-11-08 2 views
2

Comment puis-je lire un schéma en datatable en C#schéma pour 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> 

Essayer ce code mais ne parvient:

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)); 
+0

Quand vous dites échouer, que voulez-vous dire exactement? Est-ce qu'il lance une exception? Est-ce qu'il lit une partie du schéma? Est-ce que ça tombe en panne, etc. –

Répondre

4

Votre code sera jeté "élément racine est manquant" exception.

J'ai trouvé une solution dans DaniWeb, qui consiste à ajouter les codes ci-dessous pour réinitialiser la position.

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. 

Veuillez réessayer.

+0

vous êtes génial, c'est l'erreur exacte que je recevais et le réglage de la position à 0 a fait l'affaire. Merci. – gangt