如何从重复节点中提取XML节点值和属性

时间:2013-02-25 22:31:51

标签: xml xpath pentaho kettle

我正在使用Kettle和Get Data From XML转换从XML文件中提取某些信息。我将Loop Xpath设置为/*[name()='feed']/*[name()='entry'],它会引入所有相关字段。

我想从regions节点中提取每个<region>节点作为它自己的字段,以便稍后我可以用“/”分隔符连接它们。

接下来,我需要为每个weekly_rate_from节点创建weekly_rate_to<rate>等字段。我无法弄清楚Xpath来区分像periodType这样的属性,然后还要提取from和to信息。换句话说,我需要在periodType = weekly

时仅提取“to”和“from”rate属性

希望这不是太混乱我可能没解释好

<feed>
<entry>
  <content>
    <listing>    
      <regions>
        <region>World</region>
        <region>USA</region>
        <region>California</region>
        <region>Inland Empire California</region>
        <region>Temecula Valley</region>
        <region>Temecula</region>
      </regions>
      <rates rentalBasis="property">
        <rate from="3395" to="4175" currencyUnit="USD" periodType="weekly"/>
        <rate from="599" to="749" currencyUnit="USD" periodType="nightly-weekday"/>
        <rate from="799" to="1019" currencyUnit="USD" periodType="nightly-weekend"/>
      </rates>
    </listing>
  </content>
</entry>
<entry>
...
</entry>
... for a total of 20 "entry" nodes
</feed>

1 个答案:

答案 0 :(得分:2)

计算所有区域元素:

count(/feed/entry/content/listing/regions/region)

仅检索每周期间类型的fromto

/feed/entry/content/listing/rates/rate[@periodType = 'weekly']/@from
/feed/entry/content/listing/rates/rate[@periodType = 'weekly']/@to