非常感谢您阅读我的问题。
这是我的 xml 文件。(对于节点 Songs,有很多名为 Song 的子节点)
<?xml version="1.0" encoding="utf-8" ?>
<xmlData>
<version>1.0</version>
<Songs>
<Song>
<artist>mic</artist>
<track>2</track>
<column>happy</column>
<date>14</date>
</Song>
<Song>
<artist>cool</artist>
<track>2</track>
<column>work</column>
<date>4</date>
</Song>
</Songs>
</xmlData>
阅读xml,我使用以下代码:
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilePath);
XmlNode versionNode = doc.SelectSingleNode(@"/xmlData/version");
Console.WriteLine(versionNode.Name + ":\t" + versionNode.InnerText);
XmlNode SongsNode = doc.SelectSingleNode(@"/xmlData/Songs");
Console.WriteLine(SongsNode.Name + "\n");
XmlDocument docSub = new XmlDocument();
docSub.LoadXml(SongsNode.OuterXml);
XmlNodeList SongList = docSub.SelectNodes(@"/Songs/Song");
if (SongList != null)
{
foreach (XmlNode SongNode in SongList)
{
XmlNode artistDetail = SongNode.SelectSingleNode("artist");
Console.WriteLine(artistDetail.Name + "\t: " + artistDetail.InnerText);
XmlNode trackDetail = SongNode.SelectSingleNode("track");
Console.WriteLine(trackDetail.Name + "\t: " + trackDetail.InnerText);
XmlNode columnDetail = SongNode.SelectSingleNode("column");
Console.WriteLine(columnDetail.Name + "\t: " + columnDetail.InnerText);
XmlNode dateDetail = SongNode.SelectSingleNode("date");
Console.WriteLine(dateDetail.Name + "\t: " + dateDetail.InnerText + "\n");
}
}
它似乎工作。但是如何将更改写入 xml 文件?也许,我会更改 Song 中的一些 childNode,并可能通过艺术家关键字删除整个 chindNode。
有没有可能像这个函数 bool DeleteSongByArtist(string sArtist); bool ChangeNodeInSong(字符串 sArtist,字符串 sNodeName,字符串值);
因为“阅读解决方案”是“XmlDucoment”,所以最好使用“XmlDocument”“更改解决方案”
但是,如果您有更好的想法来阅读和更改 xml 文件,请给我示例代码...请不要写解决方案的名称,例如“Ling to xml”...实际上,我做了很多睾丸,但失败了。