请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文件,格式如上面所示 展开
<!--配置根节点-->
<A>
<B>
<C>
<D id="XXXXXXXXXXX">
<D1 id="1" name="测试1"/>
<D2 id="2" name="测试2"/>
</D>
</C>
</B>
</A>
把上面这个内容读取到datatable
请C#高手帮忙写段读取代码
读取的是个XML文件,格式如上面所示 展开
2个回答
展开全部
恕我直言,因为你的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);
}
展开全部
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();
}
}
追问
要不得。读不出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询