繁体   English   中英

REXML :: Document.new无法使用US-ASCII编码的XML进行解析

[英]REXML::Document.new fails parsing with US-ASCII encoded XML

实际上,我在使用Rails 3.2.1在jruby-1.6.7中用REXML :: Document解析XML字符串时遇到了问题。

我有一个像

<?xml version="1.0" encoding="US-ASCII"?><a><b>Something</b></a>

在执行以下操作时,它曾经与jruby-1.6.5.1一起使用

doc = REXML::Document.new(xml_string)

到目前为止,它失败并显示:

failed - can't convert NilClass into String
backtrace of deliver! org/jruby/RubyIconv.java:207:in `initialize'
org/jruby/RubyIconv.java:391:in `conv'
/opt/jruby/lib/ruby/1.8/rexml/encodings/ICONV.rb:12:in `encode'
/opt/jruby/lib/ruby/1.8/rexml/source.rb:55:in `encoding='
/opt/jruby/lib/ruby/1.8/rexml/source.rb:45:in `initialize'
/opt/jruby/lib/ruby/1.8/rexml/source.rb:11:in `create_from'
/opt/jruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:121:in `stream='
/opt/jruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:110:in `initialize'
/opt/jruby/lib/ruby/1.8/rexml/parsers/treeparser.rb:9:in `initialize'
/opt/jruby/lib/ruby/1.8/rexml/document.rb:227:in `build'
/opt/jruby/lib/ruby/1.8/rexml/document.rb:43:in `initialize'

将标题更改为以下形式时:

<?xml version="1.0" encoding="utf-8"?><a><b>Something</b></a>

一切安好。 我是否会错过系统上的库,这是已知问题吗? US-ASCII无效吗?

FWIW-不是答案,但我也从JRuby 1.6.5 / Rails 3.1.3转到1.6.7 / Rails 3.2.3,使用SimpleXML尝试解析此xml时遇到相同的“新”错误:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;simulacao&gt;&lt;ApoliceAuto Sistema=&quot;GISU&quot; Utilizador=&quot;USER&quot; 
ReferenciaExterna=&quot;16&quot; Ramo=&quot;90&quot; 
TipoSeguro=&quot;10&quot;&gt;&lt;Packs&gt;&lt;Pack 
codPack=&quot;1&quot;&gt;&lt;ValorAnualPack&gt;240.89&lt;/ValorAnualPack&gt;&lt;
ValorSemestralPack&gt;124.39&lt;/ValorSemestralPack&gt;&lt;
ValorContinuadoSemestralPack&gt;
118.84&lt;/ValorContinuadoSemestralPack&gt;&lt;ValorTrimestralPack&gt;66.12&lt;
/ValorTrimestralPack&gt;&lt;ValorContinuadoTrimestralPack&gt;60.57&lt;
/ValorContinuadoTrimestralPack&gt;&lt;ValorMensalPack&gt;27.28&lt;/ValorMensalPack&gt;&lt;
ValorContinuadoMensalPack&gt;21.73&lt;/ValorContinuadoMensalPack&gt;&lt;Mensagens/&gt;&lt;
/Pack&gt;&lt;/Packs&gt;&lt;/ApoliceAuto&gt;&lt;/simulacao&gt;

看起来像这样(通过SO解析器:))

<?xml版本=“ 1.0”编码=“ ISO-8859-1”?> <simulacao> <ApoliceAuto Sistema =“ GISU” Utilizador =“ USER” ReferenciaExterna =“ 16” Ramo =“ 90” TipoSeguro =“ 10”> <Packs> <Pack codPack =“ 1”> <ValorAnualPack> 240.89 </ ValorAnualPack> <ValorSemestralPack> 124.39 </ ValorSemestralPack> <ValorContinuadoSemestralPack> 118.84 </ ValorContinuadoSemestralPack> <ValorTrimestralPack> 66.12 </ ValorTrimesuPackPack> 60 <ValorContinue > <ValorMensalPack> 27.28 </ ValorMensalPack> <ValorContinuadoMensalPack> 21.73 </ ValorContinuadoMensalPack> <Mensagens /> </ Pack> </ Packs> </ ApoliceAuto> </ simulacao>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM