如何在c#中使用DOM在现有XML文件中添加具有值的新子文件
本文关键字:文件 添加 DOM XML | 更新日期: 2023-09-27 18:12:21
我已经有了一个XML文件,它的结构是这样的:
<?xml version="1.0" encoding="utf-16"?>
<configuration>
<FilePath>C:'Recordings</FilePath>
<Timer>2</Timer>
</configuration>
我想在<configuration>
中再添加一个子节点,并希望得到如下所示的新结构。此外,在添加之前,我还想确保添加的新子元素是否存在。
<?xml version="1.0" encoding="utf-16"?>
<configuration>
<FilePath>C:'Recordings</FilePath>
<Timer>2</Timer>
<LastSyncTime>Some Value</LastSyncTime>
</configuration>
如果<LastSyncTime>
不存在,则只能添加它,否则不添加。
到目前为止,我已经尝试如下:
try
{
XmlDocument doc = new XmlDocument();
doc.Load(newpath);
XmlNodeList nodes = doc.SelectNodes("LastSyncDateTime");
if(nodes.Count == 0) //Means LastSyncDateTime node does not exist
{
XmlNode mynode = doc.CreateNode(XmlNodeType.Text, "LastSyncDateTime",null);
mynode.Value = DateTime.Now.ToString() + "";
doc.AppendChild(mynode);
}
foreach (XmlNode node in nodes)
{
if (node.LastChild != null)
{
LastSyncDateTime = (node.LastChild.InnerText);
Console.WriteLine("Last Date Time is : " + LastSyncDateTime);
}
}
}
catch (Exception ex)
{
//throw ex;
string str = (String.Format("{0} {1}", ex.Message, ex.StackTrace));
Console.WriteLine(str);
}
但是我得到了例外。请建议我最好的工作解决方案。由于
编辑:我得到以下例外:
[System.InvalidOperationException] = {"The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type."}
你应该用XmlNodeType.Element
而不是XmlNodeType.Text
。它还需要一些其他的修复,如下所示:
.....
XmlNodeList nodes = doc.SelectNodes("//LastSyncDateTime");
if (nodes.Count == 0) //Means LastSyncDateTime node does not exist
{
XmlNode mynode = doc.CreateNode(XmlNodeType.Element, "LastSyncDateTime", null);
//set InnerText instead of Value
mynode.InnerText = DateTime.Now.ToString();
//append to root node (DocumentElement)
doc.DocumentElement.AppendChild(mynode);
}
.....