C# 无法添加到XML中的节点
我在C#winforms中有一个名为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
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中,您应该学习如何使用调试器。只要在调试器中单步执行代码,就可以很容易地解决这个问题