2014-06-24 4 views
0

데이터베이스에서 정보를 가져와 데이터 집합에 추가하고 있습니다. 그런 다음이 정보로 XML을 만듭니다. XML뿐만 아니라 헤더에 데이터 유형을 갖고 싶습니다. 가능한가? 여기 내 코드는 XML 쓰기 :데이터베이스에서 데이터 형식이있는 XML로

//Fill dataset with different datatable: 
//first datatable 
DataSet imports = new DataSet("import"); 
NpgsqlDataAdapter daImport = new NpgsqlDataAdapter("select field1, field2 field3 from table1", _connPg); 
daImport.FillSchema(imports, SchemaType.Source, "table1"); 
daImport.Fill(imports, "table1"); 
//seconda datatable 

NpgsqlDataAdapter daImport1 = new NpgsqlDataAdapter("select field1, field2 field3 from table2", _connPg); 
daImport1.FillSchema(imports, SchemaType.Source, "table2"); 
daImport1.Fill(imports, "table2"); 

//insert relation 
DataRelation relation = new DataRelation("rel_rel1", imports.Tables["table1"].Columns["field1"], imports.Tables["table2"].Columns["field2"], true); 
relation.Nested = true; 
imports.Relations.Add(relation); 
//write xml 
imports.WriteXml("dataImport.xml"); 

을 그리고 이것은 내 XML 내가 원하는 무엇

<?xml version="1.0" standalone="yes"?> 
    <import> 
    <table1> 
    <field1>1 
    </field1> 
    <field2>name 
    </field2> 
    <field3>surname 
    </field3> 
    <table2> 
    <field1>somedata 
    </field1> 
    <field2>1 
    </field2> 
    <field3>otherdata 
    </field3> 
    </table2> 
    </table1> 
    </import> 

입니까? 이 XML을 얻고 싶지만 헤더에 정의 된 필드 유형이 필요합니다.

감사합니다. 스키마는 데이터를 직렬화하려면

답변

1

, 단지 변경 :

imports.WriteXml("dataImport.xml"); 

에 :

<?xml version="1.0" standalone="yes"?> 
<import> 
    <xs:schema id="import" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="import" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="table1"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="field1" type="xs:int" /> 
       <xs:element name="field2" type="xs:string" minOccurs="0" /> 
       <xs:element name="field3" type="xs:boolean" minOccurs="0" /> 
       <xs:element name="table2" minOccurs="0" maxOccurs="unbounded"> 
        <xs:complexType> 
        <xs:sequence> 
         <xs:element name="field1" type="xs:int" /> 
         <xs:element name="field2" type="xs:int" minOccurs="0" /> 
         <xs:element name="field3" type="xs:double" minOccurs="0" /> 
        </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:complexType> 
     <xs:unique name="table2_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true"> 
     <xs:selector xpath=".//table2" /> 
     <xs:field xpath="field1" /> 
     </xs:unique> 
     <xs:unique name="Constraint1" msdata:PrimaryKey="true"> 
     <xs:selector xpath=".//table1" /> 
     <xs:field xpath="field1" /> 
     </xs:unique> 
     <xs:keyref name="FK_T1T2" refer="Constraint1" msdata:IsNested="true"> 
     <xs:selector xpath=".//table2" /> 
     <xs:field xpath="field2" /> 
     </xs:keyref> 
    </xs:element> 
    </xs:schema> 
    <table1> 
    <field1>0</field1> 
    <field2>test</field2> 
    <field3>false</field3> 
    <table2> 
     <field1>0</field1> 
     <field2>0</field2> 
     <field3>0</field3> 
    </table2> 
    <table2> 
     <field1>1</field1> 
     <field2>0</field2> 
     <field3>1.25</field3> 
    </table2> 
    </table1> 
    <table1> 
    <field1>1</field1> 
    <field2>test 2</field2> 
    <field3>true</field3> 
    </table1> 
    <table1> 
    <field1>2</field1> 
    <field2>test 3</field2> 
    <field3>false</field3> 
    <table2> 
     <field1>2</field1> 
     <field2>2</field2> 
     <field3>2.66</field3> 
    </table2> 
    </table1> 
</import> 
:

imports.WriteXml("dataImport.xml", XmlWriteMode.WriteSchema); 

그것은 다음과 같은 XML을 생성합니다