2013-02-25 145 views
1

我正在使用Kettle和“从XML获取数据”转换从XML文件中提取某些信息。我将Loop Xpath设置为/*[name()='feed']/*[name()='entry'],它引入了所有相关的字段。如何从循环节点中提取XML节点值和属性

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

接下来,我需要为每个<rate>节点创建类似weekly_rate_fromweekly_rate_to的字段。我不能完全弄清楚Xpath来区分诸如periodType之类的属性,然后也从中提取信息。换句话说,我只需要提取“到”和“从”速度属性时periodType =每周

但愿这不是太混乱,我可能没有解释好

<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> 

回答

2

计数所有区域元素:

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

仅检索periodType每周fromto

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

谢谢!我在Xpath上并不是很清楚,所以我不知道如何获得“每周”属性。 – 2013-02-26 18:06:19