将嵌套的XML加载到数据集中
如何将以下嵌套XML加载到DataSet中?
i1 item1 subitem1 subitem2 i2 item2 subitem1 subitem2
我可以获得“项目”表格,但我如何获得子项目?
MemoryStream itemsStream = new MemoryStream(Encoding.ASCII.GetBytes(itemsXML)); DataSet itemsSet = new DataSet(); itemsSet.ReadXml(itemsStream); foreach (DataRow itemRow in itemsSet.Tables["item"].Rows) { Console.WriteLine("column id=" + itemRow["id"] as string + " name=" + itemRow["name"] as string); }
这对我有用,我所采取的唯一自由是更改子项的字段名称。
子项的原始XML
subitem1 subitem2
为子项修改了XML
subitem1 subitem2
这是代码。
DataSet myDS = new DataSet(); DataTable myTable = new DataTable("item"); myTable.Columns.Add("id", typeof(string)); myTable.Columns.Add("name", typeof(string)); myTable.Columns.Add("name1", typeof(string)); myTable.Columns.Add("name2", typeof(string)); myDS.Tables.Add(myTable); string xmlData = " -
i1 item1 subitem1 subitem2 -
i2 item2 subitem3 subitem4 "; System.IO.MemoryStream itemsStream = new System.IO.MemoryStream(Encoding.ASCII.GetBytes(xmlData)); myDS.ReadXml(itemsStream, XmlReadMode.IgnoreSchema); foreach (DataRow itemRow in myDS.Tables["item"].Rows) { MessageBox.Show("column id=" + itemRow["id"] + " name=" + itemRow["name"]); MessageBox.Show(itemRow["name1"].ToString() + " - " + itemRow["name2"].ToString()); }
使用数据集ReadXml。 你必须遵循以下链接上的文章:
https://msdn.microsoft.com/en-us/library/7sfkwf9s(v=VS.100).aspx
例如:
DataSet ds = new DataSet(); ds.ReadXml(new StringReader(nestedXml)); StringBuilder sb = new StringBuilder(); ds.WriteXml(new StringWriter(sb)); Response.Write(sb.ToString());
当然,您可以使用ds.Tables[0]
和ds.Tables[1]
单独读取表格。
上述就是C#学习教程:将嵌套的XML加载到数据集中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
String sss = @" -
i1 item1 subitem1 subitem2 -
i2 item2 subitem1 subitem2 "; StringReader rr = new StringReader(sss); DataSet sdread = new DataSet(); sdread.ReadXml(rr);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1296022.html