0

如何使用 ruby​​ 替换文本文件或 xml 文件的第一行?我在复制奇怪的 xml API 时遇到问题,需要在创建 XML 文件后编辑文档指令。我必须这样做很奇怪,但在这种情况下,这是必要的。

4

2 回答 2

2

如果您正在编辑 XML,请使用专门为该任务设计的工具。sub,gsub如果正在操作的 XML 不受您的控制,则正则表达式不是好的选择。

使用Nokogiri解析 XML、定位节点并更改它们,然后发出更新的 XML。

SO上有很多例子展示了如何做到这一点,还有Nokogiri网站上的教程。

于 2013-02-10T16:51:53.290 回答
1

有几种不同的方法可以做到这一点:

  1. 使用ARGF(假设您的 ruby​​ 程序将文件名作为命令行参数)

    ruby -e "puts ARGF.to_a[n]" yourfile.xml
    
  2. 定期打开文件然后读取n

    File.open("yourfile") { |f|
      line = nil
      n.times { line = f.gets }
      puts line
    }
    

    这种方法对内存的占用较少,因为一次只考虑一行,也是最简单的方法。

  3. 使用IO.readlines()(仅当整个文件适合内存时才有效!)

    IO.readlines("yourfile")[n]
    

    IO.readlines(...)会将文件中的每一行读入一个数组。

n上述所有示例中nth,您的文件所在的行。

于 2013-02-10T16:41:50.357 回答