【问题标题】:From database to XML with data types从数据库到具有数据类型的 XML
【发布时间】:2014-08-14 10:27:22
【问题描述】:

我正在从数据库中获取信息并将其添加到数据集中。然后我用这个信息创建一个 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,但要使用标头中定义的字段类型。

谢谢!

【问题讨论】:

    标签: sql .net xml dataset export-to-xml


    【解决方案1】:

    如果您希望架构与数据一起序列化,只需更改:

    imports.WriteXml("dataImport.xml");
    

    到:

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

    它将生成以下 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>
    

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 2012-09-04
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多