Xpath - 使用子条件查找父属性

时间:2013-04-23 05:40:25

标签: xpath ssis

需要一些帮助。我在SSIS中使用XML任务。

在下面的例子中,我试图找到价格> 20的所有那些书的ID。
如果我使用//book[price > '20']/self::*/attribute::id,我可以获得类似的值 bk101bk108bk109。我怎样才能得到像

这样的解决方案
bk101
bk108
bk109

可以解决这个问题的方法是什么?有没有比我尝试更好的方法来获得结果? XML任务中的Xpath操作设置为“值”

<catalog>
           <book id="bk101">
              <author>Gambardella, Matthew</author>
              <title>XML Developer's Guide</title>
              <genre>Computer</genre>
              <price>44.95</price>
              <publish_date>2000-10-01</publish_date>
              <description>An in-depth look at creating applications 
              with XML.</description>
           </book>
           <book id="bk102">
              <author>Ralls, Kim</author>
              <title>Midnight Rain</title>
              <genre>Fantasy</genre>
              <price>5.95</price>
              <publish_date>2000-12-16</publish_date>
              <description>A former architect battles corporate zombies, 
              an evil sorceress, and her own childhood to become queen 
              of the world.</description>
           </book>
    </catalog>

enter image description here

3 个答案:

答案 0 :(得分:0)

您可以指定索引:

//book[price > '20'][1]/@id
//book[price > '20'][2]/@id
//book[price > '20'][3]/@id

答案 1 :(得分:0)

而不是使用XML任务,我们可以使用Foreach NodeList Enumerator并在其中使用脚本任务 输入值。我刚刚做了它并且有效。

答案 2 :(得分:0)

1)如果您需要 - 观看此视频如何在SSIS中处理XML:http://www.youtube.com/watch?v=PXDexFNj44M

2)此xPath将返回价格大于20的图书ID:

//book/price[text() > 20]/../@id