gpt4 book ai didi

ruby - 与 REXML 相关的错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:55 24 4
gpt4 key购买 nike

我不确定是 REXML 还是 ruby​​ 问题。但当我使用 REXML 时,就会发生这种情况。

下面的程序应该访问目录中每个 xml 文件的元素。

#!/usr/bin/ruby -w

require 'rexml/document'
include REXML

p "Current directory was: " + Dir.pwd

Dir.chdir("/home/askar/xml_files1") {

p "Now we're in: " + Dir.pwd

if File.exist?(Dir.pwd)

xml_files = Dir.glob("ShipmentRequest*.xml")

Dir.foreach(Dir.pwd) do |file|

xmlfile = File.new(file)
xmldoc = Document.new(xmlfile)

end

else
puts "It's empty"
end

}

当我运行时:

ruby import_xml.rb

错误:

"Current directory was: /home/askar/Dropbox/rails_studio/xml_to_mysql"
"Now we're in: /home/askar/xml_files1"
There're 6226 files in the folder...
/home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/source.rb:148:in `read': Is a directory - . (Errno::EISDIR)
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/source.rb:148:in `initialize'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/source.rb:14:in `new'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/source.rb:14:in `create_from'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:127:in `stream='
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:116:in `initialize'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/parsers/treeparser.rb:9:in `new'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/parsers/treeparser.rb:9:in `initialize'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/document.rb:245:in `new'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/document.rb:245:in `build'
from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/rexml/document.rb:43:in `initialize'
from import_xml.rb:20:in `new'
from import_xml.rb:20:in `block (2 levels) in <main>'
from import_xml.rb:17:in `foreach'
from import_xml.rb:17:in `block in <main>'
from import_xml.rb:8:in `chdir'
from import_xml.rb:8:in `<main>'

当我注释掉时:

#xmldoc = Document.new(xmlfile)

它没有给出错误。

文件夹/home/askar/xml_files1 仅包含 3 个 xml 文件。

我正在使用 Linux Mint Nadia 和

ruby -v
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]

如果您注意到,出于某种原因,错误显示 ruby​​ 1.9.1。这是一个问题吗?

最佳答案

我认为@halfelf 在这里是正确的。 API docs假设 Dir.foreach 将遍历目录中的每个条目 - 在 Unix 中,这包括两个目录 ...

Dir.foreach 调用之前的几行中,您使用 glob 构建了一个名为 xml_files 的文件数组。如果您改为在循环中迭代它,会发生什么情况?

关于ruby - 与 REXML 相关的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com