美好的一天,

我一直在玩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/

10-10 15:35