当我查看XML文件时,它看起来很好,并开始 <?xml version="1.0" encoding="utf-16le" standalone="yes"?>
但是当我在Ruby中读取它并将其打印到粗壮时,前面有两个: ??<?xml version="1.0" encoding="utf-16le" standalone="yes"?>
这些来自哪里,如何删除它们?使用REXML解析它会立即失败.删除第一个字符,然后解析它,给我这个错误:
REXML::ParseException: #<REXML::ParseException: malformed XML: missing tag start
Line:
Position:
Last 80 unconsumed characters:
<?xml version="1.0" encoding="utf-16le" s>
处理这个问题的正确方法是什么?
编辑:下面是我的代码.该ftp.get下载从FTP服务器的XML.(我想知道这可能是相关的.)
xml = ftp.get
puts xml
until xml[0,1] == "<" # to remove the 2 invalid characters
puts xml[0,2]
xml.slice! 0
end
puts xml
document = REXML::Document.new(xml)
Run Code Online (Sandbox Code Playgroud)
最后一个put打印出正确的xml.但由于这两个无效的角色,我感觉还有其他问题.没有必要删除任何东西.不过,我不知道问题可能是什么.
编辑2:我正在使用Net :: FTP下载XML,但是这个新方法让我可以将内容读入字符串而不是文件:
class Net::FTP
def gettextcontent(remotefile, &block) # :yield: line
f = StringIO.new()
begin
retrlines("RETR " + remotefile) do |line|
f.puts(line)
yield(line) if block
end
ensure
f.close
return f
end
end
end
Run Code Online (Sandbox Code Playgroud)
编辑3:它似乎是由StringIO(在Ruby 1.8.7中)不支持unicode引起的.我不确定是否有解决方法.
| 归档时间: |
|
| 查看次数: |
1747 次 |
| 最近记录: |