请C#高手写个读取XML 到 datatable

<?xmlversion="1.0"encoding="UTF-8"?><!--配置根节点--><A><B><C><Did="XXXXXXXXXXX"><D1id="1"... <?xml version="1.0" encoding="UTF-8"?>
<!--配置根节点-->
<A>
<B>
<C>
<D id="XXXXXXXXXXX">
<D1 id="1" name="测试1"/>
<D2 id="2" name="测试2"/>

</D>
</C>

</B>

</A>
把上面这个内容读取到datatable
请C#高手帮忙写段读取代码
读取的是个XML文件,格式如上面所示
展开
 我来答
actonst
推荐于2018-04-12 · TA获得超过1.8万个赞
知道大有可为答主
回答量:8184
采纳率:80%
帮助的人:5126万
展开全部

恕我直言,因为你的XML的结构并不适合填充DataSet,如果直接读取,最后出来的DataTable用处恐怕不大。

XML文件读取到DataSet中非常之容易:

        DataSet ds = new DataSet();
        ds.ReadXml("1.xml");
        DataTable tb1 = ds.Tables[0];
        DataTable tb2 = ds.Tables[1];

因为你的XML的嵌套结构,以及元素名全都不一样,所以DataSet中一共有五个table,分别是A,B,C,D,D1,D2。

 

如果只想把D下面的子元素读到DataTable里,就得要逐步读取:

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("name.xml");   // 这里是你的xml文件名
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
  
foreach (XmlNode node in xmldoc.SelectSingleNode("//D[@id='XXXXXXXXXXX']").ChildNodes)   // 寻找id是xxx的D元素,遍历它的子元素 
{
      DataRow dr = dt.NewRow(); 
      dr["id"] = node.Attributes["id"].Value; 
      dr["name"] = node.Attributes["name"].Value; 
      dt.Rows.Add(dr); 
}
轻舞霓裳a
2013-07-06 · TA获得超过247个赞
知道答主
回答量:374
采纳率:0%
帮助的人:168万
展开全部
    private DataSet ConvertXMLToDataSet(string xmlData)
    {
      StringReader stream = null;
      XmlTextReader reader = null;
      try
      {
        DataSet xmlDS = new DataSet();
        stream = new StringReader(xmlData);
        reader = new XmlTextReader(stream);
        xmlDS.ReadXml(reader);
        return xmlDS;
      }
      catch (Exception ex)
      {
        string strTest = ex.Message;
        return null;
      }
      finally
      {
        if (reader != null)
        reader.Close();
      }
    }
追问
要不得。读不出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式