xmlドキュメントからXElementを選択し、xmlドキュメントの2つの "レベル"で一致させようとしています。私が別のライブラリのノードにこの要素とすべての子要素をコピーすることができるようにlinqを使用して2つの要素レベルに一致するxml要素を見つける
そして、私は図書館で読書リスト名「TEST2」を見つけたい「メイン」:私のファイル構造です。
私はこれを学ぼうとしているので、私はlinqを使用したソリューションを好むでしょう。任意のヘルプ
を事前に
おかげで、私は新しい「リーディングリスト」を追加し、私はそれをこのように実行します。
public void AddReadingList(string fullyQualifiedPath, Library lib, string name)
{
XDocument xdoc = XDocument.Load(fullyQualifiedPath);
XElement library = xdoc.Element("eStack").Elements("Library")
.Single(x => x.Attribute("Name").Value == lib.Name);
library.Add(new XElement("ReadingList", new XAttribute("Name", name)));
xdoc.Save(fullyQualifiedPath);
}
を私は実行する操作は、この要素のコピーであり、サブ要素。問題は、同じ名前を持つ複数の "library"要素がある可能性があるため、ライブラリ名と読み取りリスト名を確認する必要があるということです。それは理にかなっていますか?
がvar result = XDocument.Load(fullyQualifiedPath)
.Descendants("Library")
//Can replace with `FirstOrDefault` if you know there is only one
.Where(element => element.Attribute("Name")?.Value == "Main")
.Descendants("ReadingList")
.Where(element => element.Attribute("Name")?.Value == "Test2").ToList();
あなたはまた、私はまたapp
やその他のレベルを指定しないようにして、それを使用することが好ましい代わりDescendants
の.Elements
を使用することができますトリックを行います.Descendants
とWhere
秒の組み合わせを使用して
あなたが私たち何」で共有することはできますが、やった? –