● XmlDocument.Save()的问题

broadury 2004-06-24 09:48:34
Csdn上有一篇文章,介绍在Xml文件中插入节点,用XmlDocument读入,操作完用XmlDocum
ent.Save()存回原文件,但是这时出现异常,说是文件被另一进程使用,我确定除了.Net
没有其他的进程,这该如何解决呢?



原文件如下

已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
</bookstore>

1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点
xe1.AppendChild(xesub1);//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>
...全文
474 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
broadury 2004-06-25
  • 打赏
  • 举报
回复
好的,谢谢.
peterli1976 2004-06-24
  • 打赏
  • 举报
回复
我用你的程序调试过了,没有问题
Rossetti 2004-06-24
  • 打赏
  • 举报
回复
如下:
原数据:
<?xml version="1.0" encoding="utf-8" ?>

<Expressions>

<Expression ID="1" name="a+b" remark="测试一">
<Param name="a" remark="注解1"></Param>
<Param name="b" remark="注解2"></Param>
</Expression>

</Expressions>

如何操作使该文件内容变成:
<?xml version="1.0" encoding="utf-8" ?>

<Expressions>

<Expression ID="1" name="a+b" remark="测试一">
<Param name="a" remark="注解1"></Param>
<Param name="b" remark="注解2"></Param>
</Expression>
<Expression ID="2" name="x-y" remark="测试二">
<Param name="x" remark="注解1"></Param>
<Param name="y" remark="注解2"></Param>
</Expression>


</Expressions>

//------------------------------
string sFileName = "ExpXml.xml";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(sFileName);
XmlNode node = xmldoc.DocumentElement.ChildNodes[0].CloneNode(true);
node.Attributes["ID"].Value = "2";
node.Attributes["name"].Value = "x-y";
node["Param"].Attributes["name"].Value = "x";
node["Param"].InnerText="aaaa";
//......
xmldoc.DocumentElement.AppendChild(node);
xmldoc.Save(sFileName);
michleliu 2004-06-24
  • 打赏
  • 举报
回复
楼主的代码好像没有问题呀!是不是你开了两个一样的程序啊?

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧