我有一个XML文件牛逼帽子1个多节点中删除一个子节点我会删除... 1个节点,这里是:从parrent节点具有相同的名称
<games>
<game>
<gameName>Test6</gameName>
<exePath>E:\LeagueOfLegends\League of Legends\lol.launcher.exe</exePath>
<Files>
<file>C:\Users\Stian\Desktop\toComp\334.jpg</file>
<file>C:\Users\Stian\Desktop\toComp\341.jpg</file>
<file>C:\Users\Stian\Desktop\toComp\compressed\334.jpg</file>
<file>C:\Users\Stian\Desktop\toComp\compressed\341.jpg</file>
<file>C:\Users\Stian\Desktop\toComp\compressed\Test1\334.jpg</file>
<file>C:\Users\Stian\Desktop\toComp\compressed\Test1\341.jpg</file>
</Files>
</game>
</games>
我的问题是...我想删除其中一个文件节点...包含“C:\ Users \ Stian \ Desktop \ toComp \ 334.jpg”作为内部文本...
而我的代码为目前(并且它不工作):
private void removeFile_Click(object sender, EventArgs e)
{
String appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString();
String gpsPath = appDataFolder + "/GameProfileSaver";
String gName = comboBox1.SelectedItem.ToString();
XmlDocument doc = new XmlDocument();
doc.Load(gpsPath + "/games.xml");
foreach (string li in listBox1.SelectedItems)
{
string liS = li.Replace(@"\\", @"\");
XmlNode file = doc.SelectSingleNode("games/game[gameName='" + gName + "']/Files[@file='" + liS + "']");
file.ParentNode.RemoveChild(file);
}
doc.Save(gpsPath + "/games.xml");
}
而我刚刚得到一个NullReferenceException ....并且当我尝试其他的东西..我现在没有代码..是它删除了整个节点...
没有做过的XPath的年龄,但我敢肯定'@'用于属性('@文件=')。在任何情况下,'file.ParentNode.RemoveChild(file)'看起来都不正确 - 就像你告诉它删除它自己一样。 – Tim