Я получаю исключение 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, просто чтобы попробовать следующий код.И там я тоже получаю NullReferenceException при добавлении атрибута newPlayerId к элементу newElement.Первая часть работает отлично, она создает 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>