我有跟随XML:
<ValidationObject>
<Role name='PM Front End'>
<FileSystem>
<Directory path='C:\DeleteMe\HashingTest\Main' ValidateEntireFolder='true'>
<File path='C:\DeleteMe\HashingTest\Main\1.txt' hashValue='-1109720489'/>
<File path='C:\DeleteMe\HashingTest\Main\2.txt' hashValue='824588598'/>
<File path='C:\DeleteMe\HashingTest\Main\3.txt' hashValue='-1033034397'/>
<Directory path='C:\DeleteMe\HashingTest\Main\Sub1'>
<File path='C:\DeleteMe\HashingTest\Main\Sub1\Sub1-1.txt' hashValue='-1443348279'/>
<File path='C:\DeleteMe\HashingTest\Main\Sub1\Sub1-2.txt' hashValue='-666832362'/>
</Directory>
</Directory>
<!--Only two file were selected for validation purposes in the following folder-->
<Directory path='C:\DeleteMe\HashingTest\Sibling'>
<File path='C:\DeleteMe\HashingTest\Sibling\1.txt' hashValue='-444971301'/>
<File path='C:\DeleteMe\HashingTest\Sibling\2.txt' hashValue='-431992169'/>
</Directory>
</FileSystem>
</Role>
如果ValidateEntireFolder为true,我需要从XML中提取Direcotry XML片段。从那里我需要一个所有文件XElements的列表。
我尝试使用XmlNode.SelectNodes,但这需要对元素进行精确的XPath。问题是在我的情况下,我不知道所有的XPath。目录节点可以在树中的任何位置。
有人可以帮帮我吗?
由于
答案 0 :(得分:2)
使用Linq2Xml
var xDoc = XDocument.Load(filename);
var dirs = xDoc.XPathSelectElements("//Directory[@ValidateEntireFolder='true']");
答案 1 :(得分:1)
即使您不知道确切的路径,也可以将XmlNode.SelectNodes
与XPath查询一起使用:
XmlNodeList nodeList = xmlDoc.SelectNodes("descendant::Directory[@ValidateEntireFolder='true']");
希望这有帮助。