2

実際、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 は無効ですか??

4

1 に答える 1

0

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 version="1.0" encoding="ISO-8859-1"?> <simulacao><ApoliceAuto Sistema="GISU" Utilizator="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</ValorTrimestralPack><ValorContinuadoTrimestralPack>60.57</ValorContinuadoTrimestralPack ><ValorMensalPack>27.28</ValorMensalPack><ValorContinuadoMensalPack>21.73</ValorContinuadoMensalPack><Mensagens/></Pack></Packs></ApoliceAuto></simulacao>

于 2012-04-28T15:46:53.857 に答える