尝试将元素附加到其父元素到元素时出现 NullReferenceException,如下所示
XmlDocument dartDatabase = new XmlDocument();
string path = @"D:\xml\dartDatabase.xml";
...
dartDatabase.Load(path);
XmlNode newGame = dartDatabase["games"].AppendChild(dartDatabase.CreateElement("game"));
XmlNode newGameId = dartDatabase.CreateAttribute("id");
newGameId.Value = gameId.ToString();
newGame.Attributes.SetNamedItem(newGameId);
...
XmlNode existingGame = dartDatabase.DocumentElement.SelectSingleNode("/games/game[@id='gameId']");
XmlNode newPlayer = dartDatabase.CreateElement("player");
existingGame.AppendChild(newPlayer);
//dartDatabase.DocumentElement.InsertAfter(newPlayer, dartDatabase.DocumentElement.LastChild);
XmlNode newPlayerId = dartDatabase.CreateAttribute("id");
newPlayerId.Value = playerId.ToString();
newPlayerId.Attributes.SetNamedItem(newPlayer);
XPath 表达式中可能有一些错误,所以我尝试将元素 newPlayer 作为 lastChild 附加,只是为了尝试下面的代码。当将属性 newPlayerId 附加到元素 newElement 时,我也得到 NullReferenceException。第一部分工作得很好,它像这样创建 xml 文件,
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<games>
<game id="2" name="501" />
</games>
但第二部分,当我尝试将 newPlayer 元素添加到我通过属性 id 确定的特定元素时。
xml 文件应如下所示
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<games>
<game id="2" name="501">
<player id="1">
</player>
</game>
</games>