XPATH:过滤(而不是选择节点),保留层次结构

时间:2014-03-17 18:13:38

标签: xpath-2.0

鉴于以下XML(具有许多层次结构级别),我需要在使用Hide“True”属性和特定名称过滤所有节点后返回节点。请注意,hide可以位于任何层次结构级别:

 <items>
 <item id="1"  >
    <item id="2" />
    <item id="3" />
    <item id="4" hide="true"/>
 </item>
 <item id="5" hide="true">
 <item id="6" >
    <item id="7">
       <item id="8" hide="true"/>
       <item id="9"/>
    </item>
 </item>
 </items>

我需要回复:

<items>
 <item id="1"">
    <item id="2" />
    <item id="3" />
 </item>
 <item id="6" >
    <item id="7">
       <item id="9"/>
    </item>
 </item>
</items>

然后将“已过滤的”XML分配给树视图,因此我需要保留节点的分层特性。我试过了:“item // item [@ hide ='false'或者不是(@hide)]”,但这会返回一个扁平化(以及重复的)数据,在较低级别重复节点推升到顶层如下。有没有办法使用Xpath来做我想要的?我知道我可以首先Xslt数据,然后显示它,但它似乎是一个更容易的方式。我正在使用c#/。net4.0 MSXML

<items>
 <item id="1"">
    <item id="2" />
    <item id="3" />
  </item>
 <item id="6" >
    <item id="7">
       <item id="9"/>
    </item>
 </item>
 <item id="2" />
 <item id="3" />
 <item id="7">
       <item id="9"/>
  </item>
  <item id="9"/>
</items>

0 个答案:

没有答案