从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。目录节点可以位于树中的任何位置。

有人能帮我一下吗?

谢谢

从XML中获取子句

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']");