2010-12-15 29 views
0

Je dois manquer quelque chose d'évident, mais je ne peux pas sembler obtenir le code suivant au travail:REXML pense fichier est un répertoire et ne crée pas un document REXML ::

xml_files_dir.each do | xml_file | 
    file = File.new (xml_files_dir + "/" + xml_file) 
    puts File.file? file #true. so I know the file was created and is a file 
    doc = REXML::Document.new file #error 
end 

ce que je get est:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/source.rb:146:in `read ': est un répertoire -/Path/Pour/Mon/XML/Fichier /. (Errno :: EISDIR)

Pourquoi REXML pense-t-il que mon fichier est un répertoire lorsqu'il semble être un fichier valide?

Merci

Répondre

1

Si vous met hors xml_file dans votre boucle, je pense que vous verrez « fichiers » nommés . et ... Vous aurez besoin d'une certaine logique pour vous assurer que vous n'essayez pas de les traiter comme des fichiers réels avant de créer votre objet rexml.

Je voudrais offrir un exemple de code, mais je ne suis pas sûr quel type d'objet votre xml_files_dir est. Si vous jetez juste un puts là je pense que vous verrez de quoi je parle.

+0

J'avais oublié le '.' et '..' entrées du répertoire. Je vous remercie. – Thomas