Ruby nokogiri如何提取部分字段

Ruby nokogiri如何提取部分字段,ruby,nokogiri,Ruby,Nokogiri,我的文本文件如下: <first>1</first><Name>wangli</Name><birthday>19860105</birthday><address>Here</address> <first>2</first><Name>zhangli</Name><birthday>19870105</birthday><

我的文本文件如下:

<first>1</first><Name>wangli</Name><birthday>19860105</birthday><address>Here</address>
<first>2</first><Name>zhangli</Name><birthday>19870105</birthday><address>Sangdu</address>
<first>3</first><Name>lili</Name><birthday>19880105</birthday><address>Hongkong</address>
<first>4</first><Name>liuli</Name><birthday>19860515</birthday><address>London</address>
我用过:

require 'nokogiri'
doc = Nokogiri::XML(File.open("file"),nil,"gbk")
puts doc.xpath("/name") + doc.xpath("/address")

无法工作

看起来问题解决了! 我更改文本文件:

<doc>
<line><first>1</first><Name>wangli</Name><birthday>19860105</birthday><address>Here</address></line>
<line><first>2</first><Name>zhangli</Name><birthday>19870105</birthday><address>Sangdu</address></line>
<line><first>3</first><Name>lili</Name><birthday>19880105</birthday><address>Hongkong</address></line>
<line><first>4</first><Name>liuli</Name><birthday>19860515</birthday><address>London</address></line>
</doc>

由于输入XML的每一行都包含一个XML片段,因此必须逐个处理每一行。此外,还需要使用Nokogiri::XML.fragment来解析每一行。下面是一个工作示例:

require "nokogiri"

output = File.open("output.txt", "w")

File.open("input.xml", "r") do |f|
    f.each_line do |line|
        frag = Nokogiri::XML.fragment(line)
        output.puts "#{frag.search('Name').text}=#{frag.search('address').text}"
    end
end

output.close

检查Nokogiri备忘单:欢迎使用堆栈溢出。读,然后。您的代码没有显示您的努力,看起来像是一个小尝试,希望我们能够填补空白。您的文本文件实际上是一个XML文档,还是一系列XML片段?如果是第二个,它是如何变成这样的?根本不需要修改文件。一个更好的问题是为什么文件的结构是这样的;这不是有效的XML。非常感谢。但是我怎样才能得到Name.language GBK?@Syutran我不知道Name.langauge是什么意思,GBK是什么
require 'nokogiri'
doc = Nokogiri::XML(File.open("27065"),nil,"gbk")
doc.xpath("//line").each do |line|
    l.xpath("./name").text + "-" + line.xpath("./address").text
end
require "nokogiri"

output = File.open("output.txt", "w")

File.open("input.xml", "r") do |f|
    f.each_line do |line|
        frag = Nokogiri::XML.fragment(line)
        output.puts "#{frag.search('Name').text}=#{frag.search('address').text}"
    end
end

output.close