草庐IT

nokogiri

全部标签

ruby - Nokogiri 和 XPath 帮助

不可否认,我是一个Nokogiri新手,我一定错过了一些东西......我只是想从这个XML中打印author>name节点:MattDarbyTitle我正在尝试使用它,但它没有打印任何内容。看似没有节点(甚至'*')不返回任何内容。Nokogiri::XML(@xml_string).xpath("//author/name").eachdo|node|putsnodeend 最佳答案 Alejandro已经回答了这个inhiscomment(+1)但我也添加了这个答案,因为他遗漏了Nokogiri代码。使用带有XPath的No

ruby - 使用 Ruby 和 Nokogiri 解析大型 XML 文件

我有一个很大的XML文件(大约10K行),我需要定期解析这种格式的文件:10000CategoryName1Val1......10,000moretimes我想做的是使用nokogiri解析每个单独的节点,以计算一个类别中的项目数量。然后,我想从total_count中减去该数字,得到一个输出“CountofInterest_Category:n,CountofAllElse:z”。现在这是我的代码:#!/usr/bin/rubyrequire'rubygems'require'nokogiri'require'open-uri'icount=0xmlfeed=Nokogiri::X

ruby - 获取没有文本节点的元素的子元素

我正在使用Nokogiri和Ruby来解释XML文件的内容。我想获得所有元素的数组(或类似元素),这些元素是的直接子元素在我的例子中。但是,我得到了各种我不想要的文本节点(例如"\n\t\t\t")。有什么办法可以删除或忽略它们吗?@body="Admin5"#inmycode,theXMLcontainstab-indentation,ratherthanspaces.Itiseditedherefordisplaypurposes.@noko=Nokogiri::XML(@body)xml_request=@noko.xpath("//xml/request")where=xml_

ruby-on-rails - 获取 XML 文件 POST 请求以使用 Ruby on Rails 解析

我有一个客户端正在发送XML供我的站点解析。我通常是一个PHP专家,并且了解如何通过PHP解析它,但我不确定如何使用Ruby来解析它。客户说他们要将他们的XML文件发布到我的服务器(即下面的代码)curl-XPOST-H"Content-Type:text/xml"-d"@/path/to/file.xml"my-web-address.com/parser然后解析器处理程序页面需要能够检测到文件已发送给它,并对其进行解析。这是否意味着Ruby只是查找任何POST请求?我要调用什么才能将POST内容(XML文件)放入变量中以使其困惑?我正在使用Nokogiri来解析XML。doc=No

ruby - 结合 Nokogiri XML 构建器

我喜欢Nokogiri::XML::Builder构造,但如果我可以通过将工作拆分给多个构建器来进一步模块化构建过程,那么组装大型XML文档会更容易。有没有人看到让多个构建器合作的方法?(例如,父构建器调用函数设置子构建器以创建文档的较小部分)或者有没有办法在block终止后修改构建器?(---缺少输出XML,然后将其解析为Nokogiri::XML::Document,然后添加节点,然后再次输出XML) 最佳答案 委派构建器功能forinstance,aparentbuildercallingfunctionsthatsetchi

ruby-on-rails - 如何按属性值搜索

我有以下XML文档:foo1foo2data1data2foo3foo4我只需要获取具有type="foo:elementType1"的元素。我试过了,但得到的结果是空的。elems=doc.search("//elements[@type='foo:elementType1']")我错过了什么? 最佳答案 我从不使用xpath语法,因为它对我来说从来都不直观,但使用css选择器界面应该可行:elems=doc.search'elements[type="foo:elementType1"]'

ruby - 打印顶部没有 XML 标题行的 XML 文档

我只是想了解如何使用Nokogiri::XML::Document或Nokogiri::XML::DocumentFragment来处理to_xml。或者,我想在Nokogiri::XML::DocumentFragment上使用xPath。我无法确定该怎么做,但我成功地解析了一个Nokogiri::XML::Document。我稍后将解析和修改的DocumentFragment包含到另一段XML中,但我真的被我认为是一些非常简单的东西所困扰。就像尝试在文档或docfrag上执行to_xml,但不包括顶部的xml行。为什么这么难? 最佳答案

ruby - 获取标签名称的 xpath 语法是什么?

我正在使用Nokogiri来解析大型XML文件。假设我有以下结构:PabloMortimerFerdinandJamesCorneliusMadisonHumphreyZopharHandlebrushIII我可以这样数非企鹅:xml.xpath('//menagerie//*[not(penguin)]').length//2但是我如何获得标签列表,就像这样?(确切的格式并不重要;我只想直观地扫描非企鹅。)bullaardvark更新这给了我想要的列表-感谢Oded和TMN以及delnan!xml.xpath('//menageries/*[not(penguin)]').eachd

xml - 如何在 Ruby 中测试 XML 相等性?

显然我需要(a)将两个字符串都转换为canonicalXML或(b)比较它们的解析树。以下内容不起作用,因为返回的文档对象没有定义合理的==。Nokogiri.XML(doc_a)==Nokogiri.XML(doc_b)下面也不行,因为Nokogiri的to_xml留下了一些内部空白:Nokogiri.XML(doc_a).to_xml==Nokogiri.XML(doc_b).to_xml这是一个合理的相等近似值(并且适用于大多数情况),但它并不完全正确:Nokogiri.XML(doc_a).to_xml.squeeze('')==Nokogiri.XML(doc_b).to_x

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

我正在尝试使用Ruby的Nokogiri来解析大型(1GB或更多)XML文件。我在一个较小的文件上测试代码,只包含4条记录availablehere.我在Ubuntu10.10上使用Nokogiri版本1.5.0,Ruby1.8.7。由于我不太了解SAX,因此我尝试从Nokogiri::XML::Reader开始。我第一次尝试检索PMID标签的内容,如下所示:#!/usr/bin/rubyrequire"rubygems"require"nokogiri"file=ARGV[0]reader=Nokogiri::XML::Reader(File.open(file))p=[]reade