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);
同样的错误。我一开始以为我走错了路,但它是对的。我尝试在文件中使用其他元素,但仍然不起作用。
谁能给我一个提示,我做错了什么?
你可以这样做:
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;
}
希望这对你有帮助!