2009-12-11 3 views
1

내 데이터의 하위 요소가 스키마의 상위 요소 인 요소가 아닌 루트 요소에서 직접 쓰여지고 있습니다.xsd.exe에 의해 생성 된 DataSet이 루트 요소에 특성을 쓰지 않습니다.

내 XSD :

<xs:schema xmlns="MyNameSpace" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="MyNameSpace" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> 
    <xs:import/> 
    <xs:element name="DataFile"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="LastUpdatedBy" type="xs:string"/> 
       <xs:element name="DateTimeLastUpdate" type="xs:dateTime"/> 
       <xs:element name="DataValues" maxOccurs="unbounded"> 
        <xs:complexType> 
         <xs:all> 
          <xs:element name="Num1" type="xs:int"/> 
          <xs:element name="Num2" type="xs:int"/> 
         </xs:all> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

내 입력 파일 :

저장됩니다 무엇
<DataFile xmlns="MyNameSpace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="MyNameSpace MySchema.xsd"> 
    <LastUpdatedBy>Dan</LastUpdatedBy> 
    <DateTimeLastUpdate>2009-12-07T16:40:30.0Z</DateTimeLastUpdate> 
    <DataValues> 
     <Num1>0</Num1> 
     <Num2>0</Num2> 
    </DataValues> 
    <DataValues> 
     <Num1>2</Num1> 
     <Num2>0</Num2> 
    </DataValues> 
</DataFile> 

의 xmlns

<DataFile xmlns="MyNameSpace"> 
    <LastUpdatedBy>Dan</LastUpdatedBy> 
    <DateTimeLastUpdate>2009-12-07T16:40:30.0Z</DateTimeLastUpdate> 
    <DataValues> 
     <Num1>0</Num1> 
     <Num2>0</Num2> 
    </DataValues> 
    <DataValues> 
     <Num1>2</Num1> 
     <Num2>0</Num2> 
    </DataValues> 
</DataFile> 

MyDataSet.WriteXml(filename)의 : XSI와 XSI :의 schemaLocation 속성은 기록되지 않습니다. 그들을 보존하기 위해 내가해야 할 일은 무엇입니까? MyDataSet.WriteXml(filename, XmlWriteMode.WriteSchema);

에 대해 그 전체 스키마를 포함하지만 무엇

답변

1

.


DataSet처럼 보이지 않습니다. 당신은 NameSpace와 Prefix 프로퍼티를 가지고 플레이 할 수 있습니다.하지만 당신은 오직 하나의 네임 스페이스와 xsi : schemaLocation만을 제어 할 수 있습니다.

XmlDataDocument이 유용 할 수 있습니까? 그러나 Fx4에서는 더 이상 사용되지 않는 것으로 표시되어 있습니다.

var doc = new System.Xml.XmlDataDocument(dataSet1); 
+0

그저 잘못된 것이 있습니다. 스키마에서 대부분의 요소 값에 대한 제한을 잃습니다 (길이로 인해 위에 표시되지 않음). 그런 다음 데이터와 변환 된 스키마가 모두 포함 된 MyDataSet.DataSetName이라는 이름의 새 최상위 요소를 만듭니다. 그런 다음 버전을 제외한 xsd의 모든 특성을 가진 요소와 xs : schema ID = "MyDataSet.DataSetName"xmlns : mstns = "MyNameSpace"xmlns : msdata = "urn : schemas-microsoft-com : xml-msdata " –

+0

나는 청소하는 것을 좋아합니다. –

+0

적어도 기본적으로 DataSet.WriteXml()과 똑같은 일을합니다. –