Tag: nokogiri

Nokogiri文本节点内容

是否有任何干净的方法来获取Nokogiri的文本节点的内容? 现在我正在使用 some_node.at_xpath( “//whatever” ).first.content 这对于获取文本来说似乎非常冗长。

Nokogiri:选择元素A和B之间的内容

让Nokogiri选择start和stop元素之间的所有内容(包括start / stop-element)最聪明的方法是什么? 检查下面的示例代码,了解我在寻找什么: require ‘rubygems’ require ‘nokogiri’ value = Nokogiri::HTML.parse(<<-HTML_END) " A Foo B C Bar D E F F G ” HTML_END parent = value.css(‘body’).first # START element @start_element = parent.at(‘p#para-3’) # STOP element @end_element = parent.at(‘p#para-7’) 结果(返回值)应如下所示 : C Bar D E F F 更新:这是我目前的解决方案,但我认为必须有更聪明的东西: @my_content = “” @selected_node = true def […]

如何使用Nokogiri在NodeSet中添加子节点

我试图在根节点下添加子节点..我尝试使用下面的xml,但这不起作用。 我是Ruby和Nokogiri的新手 builder = Nokogiri::XML::Builder.with(@doc) do |xml| nodes = Nokogiri::XML::NodeSet.new(@doc, []) [].each {|nodes_one_by_one| << nodes_one_by_one.Book << nodes_one_by_one.Pen } end 我需要像这样在根节点下面添加节点 abc Benjamin 这对我有用..但我真正需要的是在文档中的特定位置之后添加这些节点。 <!– abc Benjamin –> 我尝试使用at_xpath(’// Catlog’),但它在元素的末尾添加(如你所说) <!– abc Benjamin –> book = Nokogiri::XML::Node.new(‘book’, doc) pen = Nokogiri::XML::Node.new(‘pen’, doc) . . 无论如何使用“each”循环而不是逐个添加..我试过这种方式,但这不起作用。 builder = Nokogiri :: XML :: Builder.with(doc)do | xml | nodes […]

如何将Nokogiri Document对象转换为JSON

我有一些解析Nokogiri::XML::Document对象,我想打印为JSON。 我可以把它变成一个字符串,将其解析为哈希,使用active-record或Crack,然后是Hash.to_json; 但这既丑陋又依赖于manay库。 有没有更简单的方法? 根据评论中的请求,例如XML b可以表示为JSON: b #=> {“root”:{“a”:”b”}} b #=> {“root”:{“a”:”b”,”foo”:”bar”}} 这也是我现在用Crack得到的。 实际上,实体和子标签之间的冲突是一个潜在的问题,但我自己构建了大部分XML,因此最简单的方法就是完全避免这些冲突:)

如何使用Nokogiri :: XML :: Reader来解析大型XML文件?

我正在尝试使用Ruby的Nokogiri来解析大型(1 GB或更多)XML文件。 我在一个较小的文件上测试代码, 这里只包含4条记录。 我在Ubuntu 10.10上使用Nokogiri版本1.5.0,Ruby 1.8.7。 由于我不太了解SAX,我正在尝试使用Nokogiri :: XML :: Reader。 我第一次尝试检索PMID标记的内容,如下所示: #!/usr/bin/ruby require “rubygems” require “nokogiri” file = ARGV[0] reader = Nokogiri::XML::Reader(File.open(file)) p = [] reader.each do |node| if node.name == “PMID” p << node.inner_xml end end puts p.inspect 这是我希望看到的: [“21714156”, “21693734”, “21692271”, “21692260”] 这是我实际看到的: [“21714156”, “”, “21693734”, “”, “21692271”, “”, “21692260”, “”] […]

如何用mkmf.log安装Nokogiri Ruby gem,说没有找到libiconv?

我正在安装Ruby Nokogiri gem并在下面找到错误。 如何诊断并解决它? # gem install nokogiri Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. … /opt/ruby/1.9.3-p194/bin/ruby extconf.rb checking for libxml/parser.h… *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log […]

使用Nokogiri和Ruby从html doc获取链接和href文本?

我正在尝试使用nokogiri gem来提取页面上的所有url以及它们的链接文本,并将链接文本和url存储在哈希中。 Foo Bar 我想回来 {“Foo” => “#foo”, “Bar” => “#bar”}

使用Nokogiri HTML Builder创建具有多个根节点的片段

好吧,我和Nokogiri有一个简单的问题。 我想让Nokogiri :: HTML :: Builder制作以下forms的HTML片段: #Some stuff in here #Some other stuff in here 在尝试时: @builder = Nokogiri::HTML::Builder.new(:encoding => ‘UTF-8’) do |doc| doc.div { doc.p “first test” } doc.div { doc.p “second test” } end @builder.to_html 我收到一个错误: Document has already a root node ,我部分理解。 我知道我并没有把整个东西包装成标签(Nokogiri预计,Nokogiri :: HTML :: Builderinheritance自Nokogiri :: XML :: Builder,XML文档必须有根节点)。 但我不是在构建XML文档。 […]

没有回车的Nokogiri to_xml

我目前正在使用Nokogiri :: XML :: Builder类来构造XML文档,然后在其上调用.to_xml。 结果字符串总是在节点之间包含一堆空格,换行符和回车符,我不能为我的生活弄清楚如何摆脱它们。 这是一个例子: b = Nokogiri::XML::Builder.new do |xml| xml.root do xml.text(“Value”) end end b.to_xml 这导致以下结果: Value 我想要的是这个(注意缺少的换行符): Value 如何才能做到这一点? 提前致谢!

如何让Nokogiri不要转换&nbsp; 到太空

我拿一个像html一样的html片段 “市 场 价” 其中包含“   ”,但在调用Nokogiri NodeSet的to_s之后,它就变成了 “市 场 价” ,我想保留原始的html片段,并尝试设置:save_with option方法的:save_with option ,但失败了。 有人会遇到同样的问题并给我帮助吗? 先感谢您。