0

我有一个 xml 文件,其中的标签名称是这样的

<PhysicalDrive0>
</PhysicalDrive0>
....
<PhysicalDrive8>
</PhysicalDrive8>

这里物理驱动器的数量是未知的或可以变化的。因此我不能手动寻找像

xmlDoc.SelectNodes("../PhysicalDrive0");

所以我想最好加入某种正则表达式之类的东西。到目前为止,我主要搜索的内容都是使用属性。

我试过了

XmlNodeList list = xmlDoc.SelectNodes("..//*[starts-with(name(),'PhysicalDrive')]");
            Console.WriteLine("list count "+list.Count);

这给了我一个0的计数。

请帮忙。

谢谢

4

2 回答 2

0

Better use local-name() than name(). You may have namespaces (prefix) issues with the name() function. And if you start at document root, use // and not ..//. You end up with the following xpath:

//*[starts-with(local-name(),'PhysicalDrive')]
于 2013-11-05T09:59:26.660 回答
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();
于 2013-11-05T10:10:17.350 回答