使用ruby从url解析XML doc

时间:2013-07-31 04:18:25

标签: ruby xml xml-parsing nokogiri

我对XML并不是很熟悉,而且我正在学习ruby。我遇到的问题是我使用的xml文件格式不同于那里的所有示例。我试图向我们Nokogiri,因为这似乎是一个受欢迎的做法。

我的XML文件来自网址,看起来像这样

<guides of="XML" rtn="5" tot="10" cv="1" a="XPU_NextStep" id="0" " w="" q="" g="Echo" gr="HomeRec" gt="doc" js_q="" token="0:1QeU|5iG|557|1Y7p|4rE|">
  <r t="Orbelle Toddler Bed - Cappuccino" g="Echo" s="1" rk="1" pt="0" at="0" pr="0" ar="0">
   <a n="onsale" v="Yes"/>
   <a n="SKU" v="OTI041"/>
    <display>
      <thumb n="imageName" v="http://images/mgen/master:OTI041.jpg?is=400,400"/>
      <labels>
        <l n="salePrice" v="Sale Price: 69.98"/>
        <l n="catName" v="Toddler Beds"/>
        <l n="id" v="OTI041"/>
      </labels>
    </display>
  </r>
  <r t="The Orbelle Contemporary Solid Wood Toddler Bed - Cappuccino" g="XPU_NextStep" tm="bed, toddler, toddler bed, the orbelle contemporary solid wood toddler bed cappuccino, toddler beds" s="0.4688" rk="2" pt="873" at="0" pr="0" ar="0">
   <a n="availableDomain" v="ToddlerBeds,KidsFurnitureMart"/>
   <a n="deptName" v="Kids"/>
   <a n="onsale" v="Yes"/>
   <a n="SKU" v="OTI029"/>
   <a n="nicheCategory" v="Kids Beds,Standard Toddler Beds"/>
    <display>
     <thumb n="imageName" v="http://images/mgen/master:OTI029.jpg?is=400,400"/>
      <labels>
        <l n="salePrice" v="Sale Price: 59.98"/>
        <l n="catName" v="Toddler Beds"/>
      </labels>
    </display>
 </r>

我试图从每个下面抓取v =“OTI041”

现在我只能用 -

打开文件
doc = Nokogiri::XML(open("http://www.somesite.com"))

1 个答案:

答案 0 :(得分:1)

使用此XPath:

doc.xpath('//r/a[@n="SKU"]/@v').each {|x| puts x.value }

另请注意,第一行中的语法错误为... id="0" " ...