2017-02-10 4 views
-1

私はruby​​このXMLデータを解析するには<g :?

def self.process_xml_data(xml_str) 
puts "process_xml_data" 
xml_doc = Nokogiri::XML(xml_str) 

エンド

below-私は別で

<g:image_link>http://static2.buyma.com/imgdata/item/170209/0026293105/428_1.jpg</g:image_link> 

を置換するように、これを解析しようとしていますbelow-

     <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0"> 
        <channel> 
        <title>Test Store</title> 
        <link>http://www.example.com</link> 
        <description>An example item from the feed</description> 
        <item> 
        <g:id>DB_1</g:id> 
        <g:title>Dog Bowl In Blue</g:title> 
        <applink property="ios_url" content="example-ios://electronic/db_1"/> 
        <applink property="ios_app_store_id" content="123"/> 
        <applink property="ios_app_name" content="Electronic Example iOS"/> 
        <applink property="android_url" content="example-android://electronic/db_1"/> 
        <applink property="android_package" content="com.electronic.example"/> 
        <applink property="android_app_name" content="Electronic Example Android"/> 
        <applink property="windows_phone_url" content="example-windows://electronic/db_1"/> 
        <applink property="windows_phone_app_id" content="64ec0d1b-5b3b-4c77-a86b-5e12d465edc0"/> 
        <applink property="windows_phone_app_name" content="Electronic Example Windows"/> 
        <g:description>Solid plastic Dog Bowl in marine blue color</g:description> 
        <g:google_product_category>Animals > Pet Supplies</g:google_product_category> 
        <g:product_type>Bowls & Dining > Food & Water Bowls</g:product_type> 
        <g:link>http://www.example.com/bowls/db-1.html</g:link> 
        <g:image_link>http://images.example.com/DB_1.png</g:image_link> 
        <g:condition>new</g:condition> 
        <g:availability>in stock</g:availability> 
        <g:price>9.99 GBP</g:price> 
        <g:brand>Example</g:brand> 
        <g:item_group_id>DB_GROUP_1</g:item_group_id> 
        <g:shipping> 
        <g:country>UK</g:country> 
        <g:service>Standard</g:service> 
        <g:price>9.95 GBP</g:price> 
        </g:shipping> 
        <g:custom_label_0>Made in Waterford, IE</g:custom_label_0> 
        </item> 
        <item> 
        <g:id>DB_2</g:id> 
        <g:title>Dog Bowl In Yellow</g:title> 
        <applink property="ios_url" content="example-ios://electronic/db_2"/> 
        <applink property="ios_app_store_id" content="123"/> 
        <applink property="ios_app_name" content="Electronic Example iOS"/> 
        <applink property="android_url" content="example-android://electronic/db_2"/> 
        <applink property="android_package" content="com.electronic.example"/> 
        <applink property="android_app_name" content="Electronic Example Android"/> 
        <applink property="windows_phone_url" content="example-windows://electronic/db_2"/> 
        <applink property="windows_phone_app_id" content="64ec0d1b-5b3b-4c77-a86b-5e12d465edc0"/> 
        <applink property="windows_phone_app_name" content="Electronic Example Windows"/> 
        <g:description>Solid plastic Dog Bowl in yellow color</g:description> 
        <g:google_product_category>Animals > Pet Supplies</g:google_product_category> 
        <g:product_type>Bowls & Dining > Food & Water Bowls</g:product_type> 
        <g:link>http://www.example.com/bowls/db-2.html</g:link> 
        <g:image_link>http://images.example.com/DB_2.png</g:image_link> 
        <g:condition>new</g:condition> 
        <g:availability>in stock</g:availability> 
        <g:price>9.99 GBP</g:price> 
        <g:brand>Example</g:brand> 
        <g:item_group_id>DB_GROUP_1</g:item_group_id> 
        <g:shipping> 
        <g:country>UK</g:country> 
        <g:service>Standard</g:service> 
        <g:price>9.95 GBP</g:price> 
        </g:shipping> 
        <g:custom_label_0>Made in Waterford, IE</g:custom_label_0> 
        </item> 
        </channel> 
        </rss> 

のようなXMLデータを持っています私は思ったことがありません。

**xml_doc.css('image_link')**のようにさまざまな方法を試しましたが、このxmlデータでは機能していないようです。

+1

これはドキュメント全体ではありませんか?私は名前空間としてgを確立するためのどこかに 'xmlns:g =" something "属性があるべきだと思います。 http://stackoverflow.com/questions/15849357/when-styling-xml-with-css-how-to-refer-to-tag-names-that-c​​ontain-periods-or-col#15849617およびhttps:/を参照してください。 /www.w3.org/TR/xml-names/ – HarlemSquirrel

+0

申し訳ありませんが、私はCSVを更新しました。 – RajSharma

+0

私はその一部だけを更新しました。それは人を含んでいますタグ – RajSharma

答えて

1

グラムは、名前空間であるとhttps://www.w3.org/TR/xml-names/

xmlns:g="http://base.google.com/ns/1.0" 

に概説あなたはCSSクエリg|image_linkとのリンクを選択して、このようなリンクを変更することができるはずと名前空間宣言を必要とします。

def self.process_xml_data(xml_str) 
    puts "process_xml_data" 
    xml_doc = Nokogiri::XML(xml_str) 
    image_link_tag = xml_doc.at_css "g|image_link" 
    image_link_tag.content = "new_link" 
end 
+0

申し訳ありません、私はCSVを更新しました。一度それを確認していただけますか? – RajSharma

+0

私はこの行を使用することはできないと思うdoc = File.open( "source.xml"){| f | Nokogiri :: XML(f)}私のcsvは1.5 GBの長さです。 – RajSharma

+0

私はその一部だけを更新しました。それは男性のタグを含んでいます。 – RajSharma

関連する問題