如何检索xml节点的值?

时间:2012-12-21 05:35:21

标签: c# xml linq

我有一个像这样的xml文件:

<Contacts>
   <CommandID>
       ShowInstalledProducts
   </CommandID>
</Contacts>

我需要遍历一个xml文件列表,并为每个文件检索CommandId(在本例中为ShowInstalledProducts)的值...

我是xml的新手。有人可以帮我一样。我正在尝试使用Linq来实现这一目标。 (尽管也欢迎其他解决方案)

DirectoryInfo directoryInfo = new DirectoryInfo(@“T:\ Commands”);                 FileInfo [] fileInfo = directoryInfo.GetFiles();

            foreach (FileInfo loop in fileInfo)
            {

                string doc = File.ReadAllText(loop.FullName);
                XmlDocument XMLDoc = new XmlDocument();
                XMLDoc.Load(doc);
                XMLDoc= stripDocumentNamespace(XMLDoc);
                //id = XMLDoc.Descendants("CommandID").First().Value;



            }

这是我到目前为止所做的,我正在读取文件,并试图让后代变得更好。但是每个xml文件中都有多个,我需要检索每个文件的值。卡在这里:(

2 个答案:

答案 0 :(得分:3)

第1步:转到linqpad.net并下载Linqpad应用程序。它是一个简单的编辑器,允许您编写,运行和使用Linq表达式。此外,它还有许多内置示例可供学习。 (您可能需要select Help --> Veiw samples才能打开此内容): enter image description here

第2步:将以下代码粘贴到编辑器中,然后按F5运行它(确保为其上方的“语言”选择了C# Statement(s)!)。随心所欲地进行调整并根据需要进行调整。

var bench = XElement.Parse(@"<Contacts>
                <Node>
                    Something
                </Node>
                <Node>
    Something else
                </Node>
                </Contacts>");

var listOfNodes = bench.Elements(); 
listOfNodes.Dump();

var content = listOfNodes.Select(x => x.Value); 
content.Dump();

这应该足以让你入门。请享用! :)

答案 1 :(得分:2)

fileInfo.SelectMany(fi => XDocument
                           .Load(fi.FullName)
                              .Descendants("CommandID")
                                .Select(e=>e.Value))

此LINQ代码应返回所有文件的所有CommandId值的列表。