将String XML转换为C#中的数据表

时间:2011-07-08 07:12:56

标签: c#

<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Table">
            <xs:complexType>
              <xs:attribute name="DataColumn" type="xs:string" />
              <xs:attribute name="ddlSchema" type="xs:string" />
              <xs:attribute name="ddlTable" type="xs:string" />
              <xs:attribute name="ddlColumn" type="xs:string" />
              <xs:attribute name="DefaultValue" type="xs:string" />
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <Table DataColumn="ID" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table DataColumn="CategoryName" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table DataColumn="ParentCatID" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table />
</NewDataSet>

是我的Xml,保存在数据库列中 那么它将如何转换为数据集,以便我可以绑定网格? 任何建议

3 个答案:

答案 0 :(得分:6)

为此目的使用DataSet.ReadXml方法。

        DataSet ds;
        StringReader reader = new StringReader(string);
        ds.ReadXml(reader);
        dataGridView1.DataSource = ds.Tables["TableName"];

答案 1 :(得分:3)

我建议你使用linq,那么你可以做这样的事情

更新:适应您的xml,更新2:修复命名空间以匹配您的xml

var xmlSource = XElement.Parse(xmlString);
XNamespace xs = "http://www.w3.org/2001/XMLSchema";

var xQuery = (from c in xmlSource.Descendants(xs + "NewDataSet")
                select c);

gridview1.DataSource = xQuery;
gridview1.DataBind();

答案 2 :(得分:0)

通过使用以下CodePart,您可以将XML文件数据转换为DataSet

         DataSet dsStore = new DataSet();
         dsStore.ReadXml(<Path> + "\\DataBaseValues.xml");
         return dsStore.Tables["MyData"];