在XML附加屬性的元素,當我得到一個NullReferenceException當試圖追加元素到其父到元素,這樣的NullReferenceException使用C#
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 a是一個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>
'的SelectSingleNode(「/遊戲/遊戲[@ ID =‘遊戲ID’]」); ` - 大概沒有遊戲有gameId等於「gameId」! `SelectSingleNode(「/ games/game [@ id ='」+ gameId.ToString()+「']」);`更合適。 – 2010-12-05 01:16:33
我試着像你寫的,我得到相同的結果。我檢查了existingGame爲null,但newPlayer不爲null,其值爲{Element,player} – 2010-12-05 01:24:04