我有一个xml文件,标签名称就像这样
<PhysicalDrive0>
</PhysicalDrive0>
....
<PhysicalDrive8>
</PhysicalDrive8>
此处物理驱动器的数量未知或可能有所不同。因此我无法手动查找
等节点xmlDoc.SelectNodes("../PhysicalDrive0");
所以我认为将某些正则表达式合并为一件事会更好。到目前为止,我搜索的内容主要是处理属性。
我试过
XmlNodeList list = xmlDoc.SelectNodes("..//*[starts-with(name(),'PhysicalDrive')]");
Console.WriteLine("list count "+list.Count);
这给了我一个0的计数。
请帮忙。
由于
答案 0 :(得分:0)
比local-name()
更好地使用name()
。您可能在name()
函数中遇到名称空间(前缀)问题。如果您从文档根目录开始,请使用//
而不是..//
。您最终得到以下xpath:
//*[starts-with(local-name(),'PhysicalDrive')]
答案 1 :(得分:0)
您可以使用System.Xml.Linq
:
var xDoc = XDocument.Load("input.xml");
var list = xDoc.Descendants()
.Where(e =>
e.Name.LocalName.StartsWith("PhysicalDrive"))
.Select(e => e.Value)
.ToList();