2013-11-05 38 views
0

我有一个XML文件,其中的标签名称都是这样如何获得该节点的的innerText当节点标签有变量名

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

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

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

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

我试图

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

这给了我的0.1

请帮忙计数。

感谢

回答

0

更好地利用local-name()name()。您可能会有name()函数的名称空间(前缀)问题。如果您从文档根开始,请使用//而不是..//。你结束了以下XPath:

//*[starts-with(local-name(),'PhysicalDrive')] 
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(); 
相关问题