Tag: xml

删除标记但保留文本

所以我在xml文件中有这个标签 Something 123 我想要的结果是使用Nokogiri并完全删除它的标签,因此它不再是可点击的链接,例如 Something 123 我的尝试: content = Nokogiri::XML.fragment(page_content) content.search(‘.//a’).remove 但这也删除了文本。 有关如何使用Nokogiri实现我想要的结果的任何建议?

使用Nokogiri解析大型XML

所以我试图使用Nokogiri解析400k +行XML文件。 XML文件具有以下基本格式: *** Repeated Many Times *** 166024 Multiple epiphyseal dysplasia, Al-Gazali type Macrocephaly/macrocrania/megalocephaly/megacephaly Very frequent *** Repeated Many Times *** 这是我创建的代码,用于解析每个DisorderSign id和名称并将其返回到数据库中: require ‘nokogiri’ sympFile = File.open(“Temp.xml”) @doc = Nokogiri::XML(sympFile) sympFile.close() symptomsList = [] @doc.xpath(“////DisorderSign”).each do |x| signId = x.at(‘ClinicalSign’).attribute(‘id’).text() name = x.at(‘ClinicalSign’).element_children().text() symptomsList.push([signId, name]) end symptomsList.each do |x| Symptom.where(:name => x[1], :signid […]

Ruby将单引号转换为XML中的双引号

尽管可以使用单引号或双引号定义XML属性,但我的用户正在尝试将我的软件与另一个不接受单引号属性值的软件集成。 我用户REXML来生成我的XML。 有没有办法让REXML生成双引号属性值? 如果没有,有没有办法让我轻松转换它? 谢谢

什么是Ruby的快速XML解析器?

我正在使用Nokogiri,它适用于小型文档。 但是对于180KB的HTML文件,我必须通过ulimit -s增加进程堆栈大小,并且解析和XPath查询需要很长时间。 使用库存Ruby发行版有更快的方法吗? 我习惯了XPath,但解决方案不一定需要支持XPath。 标准是: 快写。 快速执行。 强大的结果解析器。

删除XML标记及其内容之间的任何内容

我需要删除XML标记之间的任何内容,尤其是空格和换行符。 例如,从以下位置删除空格和新闻线: \ n 要得到: 这不是为了手工解析XML ,而是在XML数据被工具解析之前准备好。 更具体地说,我正在使用Hpricot(Ruby)来解析XML,不幸的是我们目前仍然停留在0.6.164版本上,所以……我不知道更新的版本,但是这个版本经常会返回奇怪的节点(对象)只包含空格和换行符。 因此,我们的想法是在将XML转换为Hpricot文档之前清理它。 备选解决方案赞赏 测试的一个例子:NoMethodError:未定义的方法`children’代表“\ n”:Hpricot :: Text 这里有趣的部分不是NoMethodError,因为那很好,但是Hpricot :: Text元素只包含一个换行符,仅此而已。

使用nokogiri将嵌套哈希转换为XML

我有很多级别的嵌套哈希,如: { :foo => ‘bar’, :foo1 => { :foo2 => ‘bar2’, :foo3 => ‘bar3’, :foo4 => { :foo5 => ‘bar5’ }}} 我怎样才能将它们转换成这样的XML?: bar bar2 bar3 bar5 我已经尝试了xml.send方法,但它将上面嵌套的哈希转换为: bar

如何使用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”, “”] […]

没有回车的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 如何才能做到这一点? 提前致谢!