我有一个像这样的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文件中都有多个,我需要检索每个文件的值。卡在这里:(
答案 0 :(得分: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();
这应该足以让你入门。请享用! :)
答案 1 :(得分:2)
fileInfo.SelectMany(fi => XDocument
.Load(fi.FullName)
.Descendants("CommandID")
.Select(e=>e.Value))
此LINQ代码应返回所有文件的所有CommandId值的列表。