如何在 C# 中更改 xml 文件的值?
How to change values of an xml file in C#?
每当我 运行 程序 xml 文件只是在原始代码上添加其他部分而不是替换它。
这是我的文件
XML:
<?xml version="1.0" encoding="utf-8" ?>
<stuff>stuff</stuff>
C#:
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
FileStream f = new FileStream(@"C:\ file path", FileMode.Open);
doc.Load(f);
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(f);
}
结果XML:
<?xml version="1.0" encoding="utf-8" ?>
<stuff>stuff</stuff><?xml version="1.0" encoding="utf-8"?>
<stuff>hi</stuff>
我不确定为什么会这样,但我认为这与将内容加载到流并将其更多分配给同一流有关。
也许您应该采用简单的方法(有效):
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Temp\Test.xml");
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(@"C:\Temp\Test.xml");
}
采用文件名的 Save 的重载将实现您正在寻找的内容。它会覆盖现有文件。
XmlDocument doc = new XmlDocument();
FileStream f = new FileStream(@"C:\file.xml", FileMode.Open);
doc.Load(f);
f.Close();
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(@"C:\file.xml");
每当我 运行 程序 xml 文件只是在原始代码上添加其他部分而不是替换它。 这是我的文件
XML:
<?xml version="1.0" encoding="utf-8" ?>
<stuff>stuff</stuff>
C#:
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
FileStream f = new FileStream(@"C:\ file path", FileMode.Open);
doc.Load(f);
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(f);
}
结果XML:
<?xml version="1.0" encoding="utf-8" ?>
<stuff>stuff</stuff><?xml version="1.0" encoding="utf-8"?>
<stuff>hi</stuff>
我不确定为什么会这样,但我认为这与将内容加载到流并将其更多分配给同一流有关。
也许您应该采用简单的方法(有效):
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Temp\Test.xml");
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(@"C:\Temp\Test.xml");
}
采用文件名的 Save 的重载将实现您正在寻找的内容。它会覆盖现有文件。
XmlDocument doc = new XmlDocument();
FileStream f = new FileStream(@"C:\file.xml", FileMode.Open);
doc.Load(f);
f.Close();
doc.SelectSingleNode("stuff").InnerText = "hi";
doc.Save(@"C:\file.xml");