私の質問を読んでくれてありがとう。
これは私の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(string sArtist, string sNodeName, string value);
「読み込み解は「XmlDucoment」なので、「XmlDocument」を使って「解を変える」方が良い
しかし、xml ファイルを読んで変更するより良いアイデアがある場合は、サンプル コードを教えてください... "Ling to xml" などのソリューションの名前を書かないでください...実際、私は多くのテストを行っています、しかし失敗しました。