作者Futurend (未来)
看板C_Sharp
标题[问题] 写入XML的问题
时间Tue Nov 30 12:41:21 2010
前辈好,小弟有一个需求需要从资料库的部分栏位建置成XML文件
虽然说DataSet可以自动输出成XML
但是想试着尝试自己实作出来这样的功能
上网找过之後,写法如下:
XmlDocument doc = new XmlDocument();
XmlElement elmDoc = doc.CreateElement("ItemList");
foreach (DataRow dr in ds.Tables[0].Rows)
{
XmlElement elm = doc.CreateElement("Item");
elm.SetAttribute("Id", Util.GetSapValue(dr, "RSPOS"));
XmlElement elmPart = doc.CreateElement("PartNo");
elmPart.InnerText = dr["PartNo"].ToString();
elm.AppendChild(elmPart);
XmlElement elmStandard = doc.CreateElement("Standard");
elmStandard.InnerText = dr["Standard"].ToString();
elm.AppendChild(elmStandard);
XmlElement elmDescription = doc.CreateElement("Description");
elmDescription.InnerText = dr["Description"].ToString();
elm.AppendChild(elmDescription);
XmlElement elmBatch = doc.CreateElement("Batch");
elmBatch.InnerText = dr["Batch"].ToString();
elm.AppendChild(elmBatch);
XmlElement elmApplyAmount = doc.CreateElement("ApplyAmount");
elmApplyAmount.InnerText = dr["ApplyAmount"].ToString();
elm.AppendChild(elmApplyAmount);
XmlElement elmStaff = doc.CreateElement("Staff");
elmStaff.InnerText = dr["Staff"].ToString();
elm.AppendChild(elmStaff);
elmDoc.AppendChild(elm);
}
doc.AppendChild(elmDoc);
虽然说这样可以达到我要的效果
但还是想请教前辈
这样的写法,有没有什麽需要改善的地方、会不会出现什麽问题
或着有没有更简洁的写法
再实作中我也产生了一些疑问
像是,
1 ) 既然都可以用XmlElement完成,那XmlNode什麽时候使用比较适当
2 ) 假如我根节点只有一个,那有没有办法省略掉那个根节点,在程式码编写上
3 ) 为什麽Element都需要从doc去Create出来,是因为命名空间的关系吗
还请前辈不吝指教,尤其是该如何去改良这样的程式码
来完成建构一个xml文件的动作
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.184.174
1F:推 Deadshot465:LINQ to XML? 11/30 13:33
2F:→ Futurend:因为系统限制无法使用LINQ = =.. 不过这边主要只有写入 11/30 15:16
3F:推 petrushka:简洁一点的写法,就是改用程式读Column Name, 而不是写死 12/02 16:33
4F:→ petrushka:在程式码内. 这样也会比较有弹性一点 12/02 16:33