无法在XML中添加节点

时间:2017-11-09 22:46:15

标签: c# xml

我在C#winforms中有一个名为User的模型,它有一个代码可以添加到xml文件中。

class User
{
    public string Username { get; set; }

    public void AddUserXml()
    {
        XmlDocument xml = new XmlDocument();

        xml.Load("user.xml");
        XmlNode x = xml.SelectSingleNode("/username");
        x.InnerText = Username;
        xml.Save("user.xml");
    }
}

在主要班级我试图称之为

User user = new User();
user.Username = "test";
user.AddUserXml();

但这会产生此错误

  

发生了类型为“System.NullReferenceException”的未处理异常。附加信息:对象引用未设置为对象的实例。

我的XML看起来像这样

<?xml version="1.0" encoding="utf-8"?>
    <user>
      <username></username>
      <course></course>
    </user>

2 个答案:

答案 0 :(得分:1)

您对SelectSingleNode的调用是您传递的“/ username”不是节点的名称,它应该是“username”。 因为它无法通过名称“/ username”找到节点,所以它返回null,然后您尝试访问null对象的属性并发出异常

答案 1 :(得分:0)

xml中最顶层的标签是&#34; user&#34;标记不是&#34;用户名&#34;标签。这就是您需要先选择用户节点然后选择用户节点的用户名节点的原因。

此外,您需要选择&#34;用户名&#34;不是&#34; / username&#34;

public void AddUserXml()
{
    XmlDocument xml = new XmlDocument();
    xml.Load("user.xml");                
    var userNode = xml.SelectSingleNode("user");
    var userNameNode = userNode.SelectSingleNode("username");
    userNameNode.InnerText = Username;
    xml.Save("user.xml");
}