2014-03-25 6 views
0

문제점이 발생하여 XML의 유효성을 검사 할 수 없습니다. 데이터를 XML로 성공적으로로드하는 코드가 있습니다. 아무 문제 없습니다. XML이 데이터 집합의 스키마에 따르지 않으면 예외를 throw합니다. throw 된 예외는 매우 간단하고 유용하지 않습니다. "XML 파일을로드 할 수 없습니다 ...."와 같은 것입니다.스키마에 대해 XML 유효성 검사

내가하려는 것은 데이터 집합에로드하기 전에 XML의 유효성을 검사하는 것입니다. 나는 정확히 내가 원하는 것을하는 다음 기사를 발견했다. 나는 문서의 코드를 사용할 때 내게 다음 예외

부울 [] 속성으로 복합 형 복잡한 type.Cannot의 직렬화 된 값을 제공

http://blogs.msdn.com/b/marcelolr/archive/2010/04/02/dataset-does-not-validate-xml-schema-xsd.aspx

.

데이터베이스에있는 내 열 중 하나가 부울 []입니다. 아무도 내게 암시를 줄 수 있습니까?

StreamWriter writer = new StreamWriter("c:\\abc.xsd"); 
String test = currentDataset.GetXmlSchema(); //exception 
currentDataset.WriteXmlSchema(writer); 

편집 :

내 데이터 세트가 XSD 파일에 정의되어 있으며 내가 코드에서 생성하고 있지 않다. 1 개의 테이블 만 System.Boolean [] 유형의 데이터 열을 사용하고 있으며 table.WriteXmlSchema()를 사용할 때이 테이블 만 예외를 제공하지 않습니다.

+0

이 아닌가? –

+0

아니요 분명히 없습니다 –

+2

[ColumnMapping] (http://msdn.microsoft.com/en-us/library/system.data.datacolumn.columnmapping.aspx) 속성을 참조하십시오. –

답변

0

기사에서와 같이 데이터에서 XSD를 생성하고이를 사용자의 abc.xsd 파일과 비교해보십시오. 나를 위해 다음 작품 : 요소 대 속성으로 열을 직렬화할지 여부를 지정를 DataColumn 유형의 속성은

DataSet ds = new DataSet(); 
DataTable table = ds.Tables.Add("Example"); 
table.Columns.Add("BoolArray", typeof(bool[])); 

table.Rows.Add(new object[] { new bool[]{true, false} }); 
table.Rows.Add(new object[] { new bool[] { false, false } }); 

StringWriter dataWriter = new StringWriter(); 
StringWriter schemaWriter = new StringWriter(); 
table.WriteXmlSchema(schemaWriter); 
table.WriteXml(dataWriter, XmlWriteMode.IgnoreSchema); 
Console.WriteLine(schemaWriter.ToString()); 
+0

나는 또한 내가 언급 한 링크에서 코드를 시도했다. WriteXmlSchema()에서 예외가 발생합니다 ... Column System.Boolean []은 복합 유형이며 복합 유형의 값을 Attribute로 직렬화 할 수 없습니다. –

+0

코드를 복사했을 때. 그것은 잘 작동합니다. 흠 어디에 문제가 될 수 있습니까? –

+0

부울 []이있는 테이블을 제외하고 모든 테이블의 스키마를 생성 할 수 있습니다. –

관련 문제