Tag: nokogiri

使用Nokogiri :: XML :: Builder附加元素

我有以下代码: builder = Nokogiri::XML::Builder.new(:encoding => ‘UTF-8’) do |xml| xml.myRoot do |xml| xml.oneChild xml.anotherChild end end 现在我想使用构建器将一些子节点附加到myRoot(第二步,我知道如何立即附加它们)。 我怎样才能做到这一点? 我试过这个: node = builder.doc.xpath(‘//myRoot/oneChild’).first Nokogiri::XML::Builder.with(node) do |xml| xml.childOfOneChild ‘Im a child of oneChild’ end 哪个不起作用。 他们不会坚持元素,它只是一个空的oneChild。

如何使用nokogiri方法.xpath和.at_xpath

我正在学习如何使用nokogiri,根据下面的代码,我找到的问题很少 require ‘rubygems’ require ‘mechanize’ post_agent = WWW::Mechanize.new post_page = post_agent.get(‘http://www.vbulletin.org/forum/showthread.php?t=230708’) puts “\nabsolute path with tbody gives nil” puts post_page.parser.xpath(‘/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]’).xpath(‘text()’).to_s.strip.inspect puts “\n.at_xpath gives an empty string” puts post_page.parser.at_xpath(“//div[@id=’posts’]/div/table/tr/td/div[2]”).at_xpath(‘text()’).to_s.strip.inspect puts “\ntwo lines solution with .at_xpath gives an empty string” rows = post_page.parser.xpath(“//div[@id=’posts’]/div/table/tr/td/div[2]”) puts rows[0].at_xpath(‘text()’).to_s.strip.inspect puts puts “two lines working code” rows = post_page.parser.xpath(“//div[@id=’posts’]/div/table/tr/td/div[2]”) puts rows[0].xpath(‘text()’).to_s.strip puts […]

是否可以用Nokogiri解析样式表?

我花了两个小时谷歌搜索这个,我找不到任何好的答案,所以让我们看看人类是否可以击败谷歌的电脑。 我想在Ruby中解析样式表,以便我可以将这些样式应用于我的文档中的元素(以使样式内联)。 所以,我想采取类似的方式 .mystyle { color:white; } 并能够将其提取到某种Nokogiri对象中。 Nokogiri类“CSS :: Parser”( http://nokogiri.rubyforge.org/nokogiri/Nokogiri/CSS/Parser.html )当然有一个很有前途的名字,但我找不到任何关于它是什么或如何它有效,所以我不知道它是否可以做我在这之后的事情。 我的最终目标是能够编写如下代码: a_web_page = Nokogiri::HTML(html_page_as_string) parsed_styles = Nokogiri::CSS.parse(html_page_as_string) parsed_styles.each do |style| existing_inlined_style = a_web_page.css(style.declaration) || ” a_web_page.css(style.declaration)[‘css’] = existing_inlined_style + style.definition end 这将从样式表中提取样式,并将它们全部作为内联样式添加到我的文档中。

在Ruby中执行XSL转换的最佳方法(XSLT 2.0)

在Ruby中执行XSL转换的最佳和最有效的方法是什么? 我尝试了Nokogiri,但无论我尝试了什么,它总会导致: compilation error: element stylesheet 样式表在我的XML编辑器中完美运行。 我在Linux上使用Ruby 1.9.3。 在探索之后,我发现Nokogiri不支持XSLT 2.0: Nokogiri使用libxml2,它只支持XPath 1.0 / XSLT1.0 我的样式表是使用XSLT 2.0语法编写的。 我更新了这个问题的标题以反映这一点。 我希望Nokogiri以更有意义的方式回应它。 为什么要执行XSL转换? 只是好奇。 我正在开发一个向其他网站提交XML Feed的网站。 每个Feed都有不同的格式,但Feed的数据来源是相同的。 因此,我决定使用从数据库提供的XSL样式表,而不是为每个Feed编写自定义代码。 这样我就可以通过上传新的样式表来创建新的Feed。

使用ruby将HTML转换为纯文本并维护结构/格式

我想将html转换为纯文本。 我不想只删除标签,我想尽可能智能地保留尽可能多的格式。 为标签插入换行符,检测段落并将其格式化,等等。 输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有锚点或图像)。 我可以把几个正则表达式放在一起,让我80%,但想到可能有一些现有的解决方案具有更多的智能。

如何用Nokogiri解析HTML表?

我正在尝试解析一个表,但我不知道如何从中保存数据。 我想将每行中的数据保存为: [‘Raw name 1’, 2,094, 0,017, 0,098, 0,113, 0,452] 样本表是: html = <<EOT Table name Column name 1 Column name 2 Column name 3 Column name 4 Column name 5 Raw name 1 2,094 0,017 0,098 0,113 0,452 . . . Raw name 5 2,094 0,017 0,098 0,113 0,452 EOT 我的刮刀代码是: doc = Nokogiri::HTML(open(html), […]

要求Nokogiri? 没有这样的文件加载

我正在尝试开始使用Nokogiri。 我跑了命令 gem install nokogiri 作为Windows 7(64位)的管理员。 控制台说“成功安装”和“1安装gem”。 当我输入 gem list –local OR gem q –local 我看到Nokogiri在“本土gem”名单上。 但是,当我尝试通过require语句(在NetBeans中)使用它时,我收到一条错误,即“没有要加载的文件”。 我究竟做错了什么? 我不是Ruby专业人士。 这也是我安装的第一个gem。 请为我愚蠢。

Nokogiri相当于jQuery nearest()方法,用于在树中查找第一个匹配的祖先

jQuery有一个可爱的,有点错误的名为nearest()的方法,它在DOM树中寻找匹配的元素。 例如,如果我有这个HTML: Yay 假设element设置为 ,那么我可以像这样计算src的值: element.closest(‘table’)[‘src’] 如果缺少表元素或其src属性,那将彻底返回“undefined”。 在Javascriptland中习惯了这个,我很想在Rubyland中找到与Nokogiri相同的东西,但是我能够想出的最接近的是使用祖先()的这种明显不优雅的黑客攻击: ancestors = element.ancestors(‘table’) src = ancestors.any? ? first[‘src’] : nil 需要三元组,因为如果在空数组上调用,则返回nil。 好主意?

如何使用Nokogiri获取XML文档的根元素名称?

使用Nokogiri,我想确定根元素的名称。 我认为对/做一个XPath查询可以做到这一点,但显然节点名称是“文档”? require ‘nokogiri’ doc = Nokogiri::XML(‘Hello’) doc.xpath(‘/’).first.name # => “document” doc.xpath(‘/foo’).first.name # => “foo” 如何在不事先知道根节点名的情况下获取字符串“foo”?

使用Nokogiri清洁HTML(而不是整洁)

tidygem不再维护,并且有多个内存泄漏问题。 有人建议使用Nokogiri。 我目前正在使用以下方法清理HTML: Nokogiri::HTML::DocumentFragment.parse(html).to_html 我有两个问题: Nokogiri删除了DOCTYPE 是否有一种简单的方法可以强制清理HTML以获得html和body标签?