1
我利用Bing API從廣告系列收集統計信息。我有一個XML文檔與我所需要的,看起來像這樣的價值觀:使用XML數據填充表(使用Nokigiri/xpath)
xml_source
<Table>
<Row>
<CampaignName value="Air Duct Cleaning" />
<Status value="Active" />
<Impressions value="1302" />
<Clicks value="39" />
</Row>
<Row>
<CampaignName value="Carpet Cleaning" />
<Status value="Active" />
<Impressions value="6946" />
<Clicks value="130" />
</Row>
<Row>
<CampaignName value="Brand Terms" />
<Status value="Active" />
<Impressions value="5012" />
<Clicks value="196" />
</Row>
</Table>
我想安裝在我看來,一個表,最終看起來像:
查看
<table>
<tr>
<td>Air Duct Cleaning</td>
<td>Active</td>
<td>1302</td>
<td>39</td>
...
我把它設置爲引入nokogiri :: XML ::文檔
doc = Nokogiri::XML(xml_source)
doc2 = doc.remove_namespaces!
bingstats = doc2.xpath("//CampaignName", "//Status", "//Impressions", "//Clicks") #creates a Nokogiri::XML::Nodeset
要獲取值爲每個那些 -
stats = bingstats.map {|map| map.values}
# => [["Air Duct Cleaning"], ["Carpet Cleaning"], ["Brand Terms"], ["active"], ["active"], ["active"], ["1302"], ["6946"], ["5012"], ["39"], ["130"], ["196"]
我使用了XPath正確?我需要引用// Table/Row元素嗎?我如何設置它以便物品可以在表中配對在一起?
任何幫助,非常感謝!
馬特 - 謝謝你的迴應!這讓我非常接近。我在視圖中實現了你的建議,每個的輸出都是'Nokogiri :: XML :: Element'。我將'.values'稱爲'row.at_xpath(「CampaignName」).values',每個的輸出結果都是像'[「Air Duct Cleaning」]這樣的單個元素數組的結果' - 我應該如何它離開那裏? – macoughl
您可以執行'row.at_xpath(「CampaignName」)。values.first',但最好做些像:'row.at_xpath(「CampaignName/@ value」)''。 –
@macoughl我已經用更好的XPath查詢更新了答案,這些查詢提取了您想要的「值」。他們現在應該給你之後的東西。 – matt