Update Xml en C#

本文关键字:en Xml Update | 更新日期: 2023-09-27 18:17:46

我想用c#更新一个文件中的xml值。

下面是XML文件:

<user_Name>
Florian
<account>
<account_Name/>
<number_lines/>
<line>
<line_Id/>
<line_Date/>
<line_Desc/>
<line_Value/>
</line>
</account>
</user_Name>

我尝试用LINQ,我有一个nullreferenceException在行我试图改变值

代码:

  public void Create_New_Account(string _path_File)
        {
            Console.WriteLine(_path_File);
            string account_Name = "test";
            XDocument xmlFile = XDocument.Load(_path_File);
            var query = from c in xmlFile.Elements("user_Name").Elements("account")
                        select c;
            Console.WriteLine(query);
            foreach (XElement account in query)
            {
                account.Attribute("account_Name").Value = account_Name;
            }
        }

我还尝试了XmlDocument:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlFile);
XmlNode node = xmlDoc.SelectSingleNode("user_Name/account/account_Name");
node.Attributes[0].Value = "test";
xmlDoc.Save(xmlFile);

同样的错误。我一开始以为我走错了路,但它是对的。我尝试在文件中使用其他元素,但仍然不起作用。

谁能给我一个提示,我做错了什么?

Update Xml en C#

你可以这样做:

foreach (XElement account in query)
    account.Element("account_Name").Add(new XAttribute("account_Name", account_Name));

更小心的是,你可以写一些代码,如果属性accountName不存在,你创建它,否则你把它添加到节点:

var accountNameAttribute = "account_Name";
foreach (XElement account in query)
{
    var accountName = account.Element(accountNameAttribute);
    if (accountName.Attribute(accountNameAttribute) == null)
        accountName.Add(new XAttribute(accountNameAttribute, account_Name));
    else
        accountName.Attribute(accountNameAttribute).Value = account_Name;
}

希望这对你有帮助!