C# 选择XML节点?
我有一个很大的XML文件,其中包含很多文件节点:C# 选择XML节点?,c#,.net,xml,C#,.net,Xml,我有一个很大的XML文件,其中包含很多文件节点: <File> <Component>Main</Component> <Path>C:\Logs\Main</Path> <FileName>logfile1.log</FileName> </File> 主要 C:\Logs\Main logfile1.log 在我的C#程序中,我想选择一个具有特定文件名的节点,例如在上面的示例中,
<File>
<Component>Main</Component>
<Path>C:\Logs\Main</Path>
<FileName>logfile1.log</FileName>
</File>
主要
C:\Logs\Main
logfile1.log
在我的C#程序中,我想选择一个具有特定文件名的节点,例如在上面的示例中,我想选择文件名为logfile1.log的文件节点。有没有办法在我的C#中做到这一点,或者我需要将文件名作为每个文件节点的属性,例如:
<File name="logfile1.log">...</File>
。。。
有人能给我建议一下这里的最佳做法吗?谢谢你的帮助
var doc = new XmlDocument();
doc.LoadXml(xml); // or Load(path)
var node = doc.SelectSingleNode("//File/FileName[.='logfile1.log']");
(见附件)
或
(见附件)
或
XPath查询将是一个很好的选择。可以使用xpath搜索元素名或属性名 比如:
var doc = new XPathDocument(path);
var xpath = doc.CreateNavigator();
//with element
var node = xpath.SelectSingleNode("//File[FileName='logfile1.log']");
//or with attribute
var node = xpath.SelectSingleNode("//File[@name='logfile1.log']");
或者,如果可能有多个匹配项,则可以使用Select查找多个匹配项,然后迭代它们
var node = xpath.Select("//File...");
XPath查询将是一个很好的选择。可以使用xpath搜索元素名或属性名 比如:
var doc = new XPathDocument(path);
var xpath = doc.CreateNavigator();
//with element
var node = xpath.SelectSingleNode("//File[FileName='logfile1.log']");
//or with attribute
var node = xpath.SelectSingleNode("//File[@name='logfile1.log']");
或者,如果可能有多个匹配项,则可以使用Select查找多个匹配项,然后迭代它们
var node = xpath.Select("//File...");
使用查询语法
var xml = XDocument.Load("input.xml");
var node = (from file in xml.Descendants("File")
where (string)file.Element("FileName") == "logfile1.log"
select file).Single();
显然,强制查询的调用(在本例中为Single())应该调出,以适合您自己的应用程序。使用查询语法
var xml = XDocument.Load("input.xml");
var node = (from file in xml.Descendants("File")
where (string)file.Element("FileName") == "logfile1.log"
select file).Single();
显然,强制查询的调用(本例中为Single())应该调出,以适合您自己的应用程序