首页 新闻 会员 周边

求通用的xml添加、删除方法

0
悬赏园豆:20 [已关闭问题] 关闭于 2010-10-26 15:42

最近在用xml保存数据,发现网上的添加方法依赖xml的结构,对不同结构的xml文件需要重写方法。感觉非常麻烦,于是就想写一个通用的方法,对不同的xml文件都通用。写了一天,对自己的方法感觉不是很满意,始终对xml结构有依赖性。比如两个xml结构:

1、<root><book name="" ruthor=""><name>adhjifh</name></book></root>

2、<root><book><name>adhjifh</name></book></root>

这两个xml文件里的book节点不相同,但我要的方法是对这两个xml文件都通用。望高手指导啊!

问题补充: 我的设想是,实现一个方法,无论xml文件的节点有几层,节点的名称是什么,节点的属性有几个,都能调用同一个方法进行插入或者修改操作。
萧鼎的主页 萧鼎 | 初学一级 | 园豆:106
提问于:2010-10-25 17:17
< >
分享
所有回答(4)
0

这两个节点是相同的吧,只是第一个book节点多了两个name和ruthor的属性.

changbluesky | 园豆:854 (小虾三级) | 2010-10-25 17:20
0

使用 XmlSerializer 类.

Launcher | 园豆:45045 (高人七级) | 2010-10-25 17:34
0

看了一下你的补充说明还是不知道你想问什么。。。

路过秋天 | 园豆:4787 (老鸟四级) | 2010-10-25 20:02
已经解决了。可能我没描述明白,其实就是将对xml的操作进行封装。下面是我的添加代码: /// <summary> /// 添加xml节点(三级节点) /// </summary> /// <param name="obj">封装节点属性</param> /// <param name="fileName">保存路径</param> /// <param name="fatherNode">根节点</param> /// <param name="sonNode">二级节点</param> public void SaveForThreeNodes(object obj, string fileName, string fatherNode, string sonNode) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(fileName); //查找根节点 XmlNode root = xDoc.SelectSingleNode(fatherNode); //添加二级节点 XmlElement xe = xDoc.CreateElement(sonNode); foreach (PropertyInfo propertyInfo in obj.GetType().GetProperties()) { ColumnAttribute columnAttribute = (ColumnAttribute)propertyInfo.GetCustomAttributes(typeof(ColumnAttribute), false)[0]; //判断是否为节点属性 if (columnAttribute.IsAttribute) { xe.SetAttribute(propertyInfo.Name, propertyInfo.GetValue(obj, null).ToString()); } else { //如果是子节点则创建 XmlElement node = xDoc.CreateElement(propertyInfo.Name); node.InnerText = propertyInfo.GetValue(obj, null).ToString(); xe.AppendChild(node); } } root.AppendChild(xe); xDoc.Save(fileName); }
支持(0) 反对(0) 萧鼎 | 园豆:106 (初学一级) | 2010-10-26 15:41
0

试试看,开源的

SAX for .NET

http://saxdotnet.sourceforge.net/

邀月 | 园豆:25475 (高人七级) | 2010-10-26 08:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册