1

我有一个这样的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 文件中有多个,我需要检索每个的值。卡在这里:(

4

2 回答 2

3

第 1 步:转到linqpad.net并下载 Linqpad 应用程序。它是一个简单的编辑器,允许您编写、运行和使用 Linq 表达式。此外,它还有很多内置示例可供学习。(您可能必须select Help --> Veiw samples打开它): 在此处输入图像描述

第 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();

这应该足以让你开始。享受!:)

于 2012-12-21T05:53:55.333 回答
2
fileInfo.SelectMany(fi => XDocument
                           .Load(fi.FullName)
                              .Descendants("CommandID")
                                .Select(e=>e.Value))

This LINQ code should return the list of all CommandId values of all files.

于 2012-12-21T12:17:25.670 回答