###
240 # Create a builder with an existing root object. This is for use when
241 # you have an existing document that you would like to augment with
242 # builder methods. The builder context created will start with the
243 # given +root+ node.
244 #
245 # For example:
246 #
247 # doc = Nokogiri::XML(open('somedoc.xml'))
248 # Nokogiri::XML::Builder.with(doc.at('some_tag')) do |xml|
249 # # ... Use normal builder methods here ...
250 # xml.awesome # add the "awesome" tag below "some_tag"
251 # end
252 #
253 def self.with root, &block
254 new({}, root, &block)
255 end
256
257 ###
258 # Create a new Builder object. +options+ are sent to the top level
259 # Document that is being built.
260 #
261 # Building a document with a particular encoding for example:
262 #
263 # Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
264 # ...
265 # end
266 def initialize options = {}, root = nil, &block
267
268 if root
269 @doc = root.document
270 @parent = root
271 else
272 namespace = self.class.name.split('::')
273 namespace[-1] = 'Document'
274 @doc = eval(namespace.join('::')).new
275 @parent = @doc
276 end
277
278 @context = nil
279 @arity = nil
280 @ns = nil
281
282 options.each do |k,v|
283 @doc.send(:"#{k}=", v)
284 end
285
286 return unless block_given?
287
288 @arity = block.arity
289 if @arity <= 0
290 @context = eval('self', block.binding)
291 instance_eval(&block)
292 else
293 yield self
294 end
295
296 @parent = @doc
297 end
分享到:
相关推荐
现在,Crystal语言也有了类似的工具,使得开发者可以在保持高效性能的同时,享受与Nokogiri类似的解析体验。 描述中的“Crystal的一个Html解析器(类似于Ruby的Nokogiri)”进一步确认了这个解析器的存在,并强调它是...
此外,书籍在内容编排上应该注重实践与理论的结合,通过大量的实例和案例来引导读者理解和掌握Nokogiri的使用,让读者在实践中不断深化对Nokogiri的认识,并能将其应用到实际项目中去。 综上所述,Nokogiri是一个...
在Ruby编程语言中,处理XML数据时,Nokogiri是一个不可或缺的工具。Nokogiri是一个gem包,它提供了强大的解析和操作XML文档的能力。本文将深入探讨如何使用Nokogiri进行XML数据的处理。 首先,安装Nokogiri涉及到...
注意:新版本可能会破坏兼容性,在这种情况下,请使用v1.0分支或标记下的先前版本,该版本甚至支持php 5.4+ \ nokogiri类用于兼容性HTML解析器该库是一个快速HTML解析器,可以处理无效代码(错误将被忽略)。...
指导原则Nokogiri尝试遵循的一些指导原则: 通过将所有文档默认情况下视为不信任来确保默认情况下的安全在基础解析器之上成为合理的薄层,并且不要尝试修复解析器之间的行为差异功能概述用于XML和HTML4的DOM解析...
1.直接以字符串形式获取nokogiri对象: html_doc = Nokogiri::HTML(<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>) xml_doc = Nokogiri::XML(<root><aliens><alien><name>...
sax-machine, 由Nokogiri支持的声明性sax解析库 SAX机器状态 描述由 Nokogiri 。Ox或者Oga支持的声明性SAX解析库。安装将此行添加到你的应用程序的Gemfile中:gem 'sax-machine'然后执行:$ bund
nokogiri-1.6.6.2-x64-mingw32.gem 使用linux-vm / win8.1上的rako-compile,rake-compile-dock(感谢@luislavena !!)交叉编译的宝石(感谢nokogiri团队!) 出于礼貌而发布,以备不时之需。 只需将其安装为系统中...
Nokogiri::签名 nokogiri 增强功能以支持。 进行签名和验证签名的艰苦工作。 这个 gem 提供了一个 nokogiri 友好的界面,用于签署和验证 XML 文档。 安装 将此行添加到应用程序的 Gemfile 中: gem 'nokogiri...
nokogiri_bang_finders 这颗宝石说“Nokogiri,如果你找不到我想要的 XML,请大喊大叫。” 例如: doc = Nokogiri :: XML ( "<root><aliens><alien><name>Alf</name></alien></aliens></root>" ) doc . at ( '...
围绕使用的Ruby FFI包装将代替Nokogiri。 现状:概念证明。 NokogiriRust::HTML.at_css.text比Nokogiri快60倍。 当然,该库的API目前与Nokogiri不兼容。 $ ruby benchmarks/nokogiri_benchmark.rb Warming up --...
用法require 'nokogumbo'doc = Nokogiri . HTML5 ( string ) 为了解析HTML片段,提供了fragment方法。 require 'nokogumbo'doc = Nokogiri :: HTML5 . fragment ( string ) 由于HTML通常是通过网络获取的,因此还...
标题中的“wichita-bridges:Nokogiri抓取JSON Goole映射”指的是一个项目,该项目使用了Nokogiri库来从网络上抓取关于威奇托市桥梁的数据,并将其整理成JSON格式,以便可能用于在Google地图上进行可视化展示。...
在Web抓取场景中,Nokogiri常用于提取网页内容,通过XPath或CSS选择器定位元素,从而获取所需数据。 **Mechanize库** Mechanize是Ruby的一个HTTP客户端库,专为自动化Web浏览和交互设计。它可以模拟浏览器的行为,...
缠绕在Nokogiri DSL,由Nokogiri用于网络抓取。 安装 将此行添加到您的应用程序的Gemfile中: gem 'buzzsaw' 然后执行: $ bundle 或将其自己安装为: $ gem install buzzsaw 用法 Stretch.io用于DSL的就是这...
这个Ruby宝石向Nokogiri XML节点添加了to_hash和to_json方法,从而使我们可以将任意XML节点序列化为JSON。 该gem还可以获取属性,注释,处理说明和doctype声明。 结果是罗word的,但完整的。 另外,在可能的情况...
使用 Ruby、Nokogiri、Sinatra 和 Heroku 进行数据抓取等 文章和截屏视频中的示例代码 在本文中,您将学习使用和从网站上抓取和解析数据的基础知识。 然后,您将获取此信息并构建示例应用程序,首先作为命令行工具,...
主要区别Nokogiri支持使用相同的HappyMapper标记解析文本节点以解析原始XML内容的解析#to_xml支持使用类组合时对名称空间的众多修复定义了名称空间但找不到该名称空间元素的XML实例的修复Installati