2012-07-24 71 views
0
选择父

我的XML结构如下:的XPath如何根据孩子

<A> 
    <B> 
     <C> 
      <D> 
       <E>1</E> 
       <F>123</F> 
      </D> 

      <D> 
       <E>1</E> 
       <F>153</F> 
      </D> 
     </C> 

     <C> 
      <D> 
       <E>1</E> 
       <F>134</F> 
      </D> 
     </C> 
    </B> 

    <B> 
     <C> 
      <D> 
       <E>2</E> 
       <F>133</F> 
      </D> 
     </C> 

     <C> 
      <D> 
       <E>2</E> 
       <F>134</F> 
      </D> 
     </C> 
    </B> 
</A> 

我想知道是否有可能让所有“B”元素(及其内容),他们的˚F元素具有特定的值,我们假设在这种情况下为134。但是,我不想让其他C元素一起 - 所以对于这个例子,我很乐意得到:

<A> 
    <B> 
     <C> 
      <D> 
       <E>1</E> 
       <F>134</F> 
      </D> 
     </C> 
    </B> 

    <B> 
     <C> 
      <D> 
       <E>2</E> 
       <F>134</F> 
      </D> 
     </C> 
    </B> 
</A> 

这甚至可能吗?我一直在玩xpath,但我得到的唯一东西是B元素所有其内容(不仅与所需的F元素)与以下xpath: // D [F = 134] /父:: C /父:: B

谢谢你在前进, 马辛

+2

你真的不想*选择带有'XPath'的节点,你可能想要用'XSLT'来转换*你的文档。 – 2012-07-24 11:08:50

+0

好的,是的。你认为我应该循环所有这些文件并打印出我需要的文件吗?我以为我会先选择它们然后再打印它们,从来没有想过用不同的方式:) – Marcin 2012-07-24 11:36:59

回答

0

如果您在B元素级别选择(不管你对孩子有什么其他条件),你总是会得到整个B元素的内容。

另一种选择可能是在C元素级别选择反向条件(F!= 134)并删除这些节点。这将取决于你的确切场景。