对于我这种不经常操作XML的,偶尔操作XML真的感觉头疼。主要还是对XML的了解不够完整。可以说是一点儿不会,每次操作XML都给抛N多异常。
因为比较经常使用CYQ.Data,刚好还支持操作,这次研究了一下,这次把自己的使用记录一下。
首先贴一下作者的文档地址 CYQ.Data.Xml XmlHelper 帮助类的使用帮助 - CYQ.Data 数据层框架 - 秋色园 (cyqdata.com)
里面其实已经很完善了,只是没有比较系统的串起来。
我自己研究了一下,也不知道是不是最好的用法,不过能实现,记录一下。
我这里有个需求想通过CYQ.Data从创建到保存一个xml,如下
<root> <urls> <add virtualUrl="~nihao/$" destinationUrl="~/ok.aspx?id=30"/> <add virtualUrl="~nihao$" destinationUrl="~/ok.aspx?id=20"/> </urls> </root>
using CYQ.Data.Xml; using CYQ.Data.Table; public void MakeXML(){ var xml = new XHtmlAction(); var root= xml.XmlDoc.CreateElement("root"); xml.CreateNodeTo(root, "urls", ""); xml.XmlDoc.LoadXml(root.OuterXml);//我之前就是卡在这里一直没有给自己创建的节点导入到new 的XHtmlAction里,总是输出不了结果。 MDataTable mdt = new MDataTable(); mdt.Columns.Add("virtualUrl", System.Data.SqlDbType.VarChar); mdt.Columns.Add("destinationUrl", System.Data.SqlDbType.VarChar); var row = mdt.NewRow(true); row.Set("virtualUrl", "~/nihao/$"); row.Set("destinationUrl", "~/ok.aspx?id=30"); row = mdt.NewRow(true); row.Set("virtualUrl", "~/nihao$"); row.Set("destinationUrl", "~/ok.aspx?id=20"); xml.LoadData(mdt);//从MDataTable导入数据 xml.SetForeach(xml.GetList("urls").Item(0), "<add virtualUrl="{0}" destinationUrl="{1}"/>", "virtualUrl", "destinationUrl");//配合SetForeach组合数据 xml.Save(Server.MapPath("/url.xml"));//最后写入到url.xml文件 }