从XML中获取子句
本文关键字:子句 获取 XML | 更新日期: 2023-09-27 18:03:40
我有以下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>
我需要从XML中提取目录XML片段(s),如果validatetotalfolder为真。从这里,我需要一个所有文件xelement的列表。
我尝试使用XmlNode。select - tnodes,但这需要对元素使用精确的XPath。问题是,在我的例子中,我不知道所有的xpath。目录节点可以位于树中的任何位置。
有人能帮我一下吗?谢谢
Using Linq2Xml
var xDoc = XDocument.Load(filename);
var dirs = xDoc.XPathSelectElements("//Directory[@ValidateEntireFolder='true']");
您可以使用XPath查询XmlNode.SelectNodes
,即使您不知道确切的路径:
XmlNodeList nodeList = xmlDoc.SelectNodes("descendant::Directory[@ValidateEntireFolder='true']");