美好的一天,
我一直在玩ToDicationary()扩展方法
var document = XDocument.Load(@"..\..\Info.xml");
XNamespace ns = "http://www.someurl.org/schemas";
var myData = document.Descendants(ns + "AlbumDetails").ToDictionary
(
e => e.Name.LocalName.ToString(),
e => e.Value
);
Console.WriteLine("Writing music...");
foreach (KeyValuePair<string, string> kvp in myData)
{
Console.WriteLine("{0} = {1}", kvp.Key, kvp.Value);
}
具有以下XML数据:
<?xml version="1.0" encoding="UTF-8"?>
<Database xmlns="http://www.someurl.org/schemas">
<Info>
<AlbumDetails>
<Artist>Ottmar Liebert</Artist>
<Song>Barcelona Nights</Song>
<Origin>Spain</Origin>
</AlbumDetails>
</Info>
</Database>
而且我没有得到想要的输出。相反,我得到这个:
Writing music...
AlbumDetails = Ottmar LiebertBarcelona NightsSpain
相反,我希望myData(“ Artist”)=“ Ottmar Liebert”,等等。
后裔有可能吗?
TIA,
子
最佳答案
下面将仅获取AlbumDetails
节点:
document.Descendants(ns + "AlbumDetails")
您需要它的直接后代(子节点)-因为它们也是元素:
document.Descendants(ns + "AlbumDetails").Elements()
全行为:
var myData = document.Descendants(ns + "AlbumDetails")
.Elements().ToDictionary(
e => e.Name.LocalName.ToString(),
e => e.Value
);
关于c# - C#XML数据导入字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11994369/