C# 通过使用C添加节点来更新存储文件夹中的xml文件#
我正在用C#制作一个通用应用程序,并试图通过添加一些节点来更新存储文件夹中的xml文件。理想情况下,从这样的文件开始C# 通过使用C添加节点来更新存储文件夹中的xml文件#,c#,xml,win-universal-app,windows-10-universal,C#,Xml,Win Universal App,Windows 10 Universal,我正在用C#制作一个通用应用程序,并试图通过添加一些节点来更新存储文件夹中的xml文件。理想情况下,从这样的文件开始 <?xml version="1.0" encoding="UTF-8"?> <MyRoot> <ParentNode> <myNode1>value1</myNode1> <myNode2>value2</myNode2> </ParentNode> </MyRoot>
<?xml version="1.0" encoding="UTF-8"?>
<MyRoot>
<ParentNode>
<myNode1>value1</myNode1>
<myNode2>value2</myNode2>
</ParentNode>
</MyRoot>
尝试以下几点:
XmlDocument doc = new XmlDocument();
doc.Load("yourfile.xml");
var root = doc.DocumentElement;
var parentNode = doc.CreateElement("ParentNode");
root.AppendChild(parentNode);
var myNode1 = doc.CreateElement("myNode1");
myNode1.Value = "value3";
parentNode.AppendChild(myNode1);
// ...add more nodes etc...
doc.Save("yourfile.xml");
尝试以下几点:
XmlDocument doc = new XmlDocument();
doc.Load("yourfile.xml");
var root = doc.DocumentElement;
var parentNode = doc.CreateElement("ParentNode");
root.AppendChild(parentNode);
var myNode1 = doc.CreateElement("myNode1");
myNode1.Value = "value3";
parentNode.AppendChild(myNode1);
// ...add more nodes etc...
doc.Save("yourfile.xml");
调用
XDocument.Load
后,您位于流的末尾,因此调用document.Save
将在流的末尾追加新内容
只要只向现有XML添加节点,每次保存时文件都会变长,就可以通过在调用文档之前移动到流的开头来解决问题。save
:
document.Root.Add(
new XElement("ParentNode",
new XElement("myNode1", "value3"),
new XElement("myNode2", "value4"))
);
s.Seek(0, SeekOrigin.Begin); // <-- add this line
document.Save(s);
调用
XDocument.Load
后,您位于流的末尾,因此调用document.Save
将在流的末尾追加新内容
只要只向现有XML添加节点,每次保存时文件都会变长,就可以通过在调用文档之前移动到流的开头来解决问题。save
:
document.Root.Add(
new XElement("ParentNode",
new XElement("myNode1", "value3"),
new XElement("myNode2", "value4"))
);
s.Seek(0, SeekOrigin.Begin); // <-- add this line
document.Save(s);
非常感谢,您的回答非常有用,因为它还包括“删除节点”场景。非常感谢,您的回答非常有用,因为它还包括“删除节点”场景。我以前使用过xmlDocument,但我遇到了相同的问题,此外,我发现XDocument更容易、更干净。我以前使用过xmlDocument,但我也遇到了同样的问题,而且我发现XDocument更容易、更干净。
document.Root.Add(
new XElement("ParentNode",
new XElement("myNode1", "value3"),
new XElement("myNode2", "value4"))
);
s.Seek(0, SeekOrigin.Begin); // <-- add this line
document.Save(s);
StorageFile newFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("myFile.xml",
CreationCollisionOption.ReplaceExisting);