2011-11-08 2 views
2

이 코드를 시도 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)); 
+0

당신이 실패하면, 정확히 무슨 뜻입니까? 예외가 발생합니까? 스키마의 일부분을 읽습니까? 자동으로 충돌이 발생합니까? –

답변

4

귀하의 코드가 발생한다 "루트 요소가없는"예외.

코드를 아래에 추가하여 위치를 재설정하는 해결책을 찾았습니다 (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. 

다시 시도하십시오.

+0

당신은 굉장합니다, 그게 내가 얻고있는 정확한 오류이고, 그 위치를 0으로 설정하면 속임수가 나옵니다. 감사. – gangt

관련 문제