Я использую Ruby 1.8.7 и мне нужно преобразовать входной XML-код MealRQ в выходной XML-код MealRS, вставив несколько тегов, значения которых основаны на MealType и других условиях.Существует ли простой способ обработки с использованием некоторой библиотеки XML или лучше всего вызывать шаблон XSL с параметрами?Я относительно новичок в Ruby и работаю в среде Linux RHEL5.В некоторых случаях я просто вызывал систему xsltproc с шаблоном для других входных xmls, которые не нуждались в каких-либо параметрах, но я хотел бы полностью перенести код в Ruby.Я слышал о Nokogiri и некоторых других, таких как Hpricot, но у меня нет опыта их настройки, и если они будут работать с 1.8.7
<MealRQ>
<User>
<Userid>abc123</Userid>
<Location>Asia</Location>
<User>
<Requests>
<Request>
<Pax>
<FirstName>FIRSTNM</FirstName>
<LastName>LASTNM</LastName>
</Pax>
<Segments>
<Segment>
<PNR>YY123</PNR>
<Airline>YY</Airline>
<FlightNum>100</FlightNum>
<Origin>JFK</Origin>
<Destination>DFW</Destination>
<DeptrDate>2011-12-25</DeptrDate>
<DeptrTime>18:30</DeptrTime>
<MealType>VEG</MealType>
<MealRemark>LOW SPICE</MealRemark>
</Segment>
<Segment>
<PNR>ZZ123</PNR>
<Airline>ZZ</Airline>
<FlightNum>100</FlightNum>
<Origin>DFW</Origin>
<Destination>JFK</Destination>
<DeptrDate>2011-12-26</DeptrDate>
<MealType>VEG</MealType>
<MealRemark>LOW SPICE</MealRemark>
</Segment>
</Segments>
</Request>
</Requests>
Выходной XML:
<MealRS>
<User>
<Userid>abc123</Userid>
<Location>Asia</Location>
<User>
<Requests>
<Request>
<Pax>
<FirstName>FIRSTNM</FirstName>
<LastName>LASTNM</LastName>
</Pax>
<Segments>
<Segment>
<PNR>YY123</PNR>
<Airline>YY</Airline>
<FlightNum>100</FlightNum>
<Origin>JFK</Origin>
<Destination>DFW</Destination>
<DeptrDate>2011-12-25</DeptrDate>
<MealType>AVML</MealType>
<MealRemark>LOW SPICE</MealRemark>
<!-- DeptrTime tag is dropped in response -->
<!-- Five new tags inserted in each Segment -->
<!-- Fail if Deptr Date/Time is less than 24 hr-->
<!-- The next 3 tags will be empty if failed -->
<Currency></Currency>
<Amount></Amount>
<TaxCode></TaxCode>
<Status>Failed</Status>
<StatusRemark>TOO LATE TO BOOK</StatusRemark>
</Segment>
<Segment>
<PNR>ZZ123</PNR>
<Airline>ZZ</Airline>
<FlightNum>100</FlightNum>
<Origin>DFW</Origin>
<Destination>JFK</Destination>
<DeptrDate>2011-12-26</DeptrDate>
<MealType>VEG</MealType>
<MealRemark>LOW SPICE</MealRemark>
<!-- these success values are for VEG MEAL -->
<Currency>USD</Currency>
<Amount>15</Amount>
<TaxCode>QQ</TaxCode>
<Status>Success</Status>
<StatusRemark>FIRSTNM ZZ100 CONF</StatusRemark>
</Segment>
</Segments>
</Request>
</Requests>