2013-02-25 4 views
1

Я использую Kettle и Get Data From XML transform для извлечения определенной информации из XML-файла. Я установил Loop Xpath в /*[name()='feed']/*[name()='entry'], который содержит все соответствующие поля.Как извлечь значения и атрибуты узлов XML из повторяющихся узлов

Я хотел бы извлечь каждый узел <region> из узла регионов в качестве своего собственного поля, чтобы позднее можно было связать их с разделителем «/».

Далее, мне нужно создать поля, такие как weekly_rate_from и weekly_rate_to для каждого узла <rate>. Я не могу понять 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

Counting весь регион элементы:

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

Восстановите from и to только для periodType еженедельно:

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

Спасибо! Я не совсем потрогал Xpath, поэтому я не знал, как получить только «еженедельные» атрибуты. –