###
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的一个Html解析器(类似于Ruby的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>...
安装 对于Ubuntu,需要安装好 libxml2, libxslt 这两个组件: $ apt-get install libxml2 libxslt 然后就可以: $ gem install nokogiri 可选项 nokogiri提供了一些解析文件时的可...doc = Nokogiri::XML(File.open
sax-machine, 由Nokogiri支持的声明性sax解析库 SAX机器状态 描述由 Nokogiri 。Ox或者Oga支持的声明性SAX解析库。安装将此行添加到你的应用程序的Gemfile中:gem 'sax-machine'然后执行:$ bund
Nokogiri 的电子书 Nokogiri 是解析HTML/XML的内容的ruby gem
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通常是通过网络获取的,因此还...
缠绕在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
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
一个简单的ruby脚本,具有Nokogiri和RestClient宝石,可抓取网站上的html内容并将数据序列化为JSON,以存储在本地。高度实验性的项目。使用风险自负。 先决条件: rvm(rvm.io) Ruby解释器(2.7.0) 所需的宝石...
使用Nokogiri 简化起点 项目页面 用法 安装 gem install blather 例子 Blather带有DSL,可让您轻松快捷地编写XMPP机器人。 有关更多高级示例,请参见examples目录。 require 'blather/client' setup 'echo@...