Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法添加到XML中的节点_C#_Xml - Fatal编程技术网

C# 无法添加到XML中的节点

C# 无法添加到XML中的节点,c#,xml,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

我在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");
    }
}
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");
}
在主课上,我试着把它叫做

User user = new User();
user.Username = "test";
user.AddUserXml();
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");
}
但这就产生了这个错误

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");
}
发生类型为“System.NullReferenceException”的未处理异常。其他信息:对象引用未设置为对象的实例

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");
}
我的XML看起来像这样

<?xml version="1.0" encoding="utf-8"?>
    <user>
      <username></username>
      <course></course>
    </user>
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");
}

您对正在传递的SingleNode的调用“/username”不是节点的名称,它应该是“username”。
因为它找不到名为“/username”的节点,所以它返回null,然后您尝试访问null对象的属性,结果出现了异常

xml中最上面的标记是“user”标记,而不是“username”标记。这就是为什么需要先选择用户节点,然后选择用户节点的用户名节点

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");
}
此外,您需要选择“用户名”而不是“/用户名”

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");
}

发生错误的行号是什么?在
InnerText
line中,您应该学习如何使用调试器。只要在调试器中单步执行代码,就可以很容易地解决这个问题