【问题标题】:REXML::Document.new fails parsing with US-ASCII encoded XMLREXML::Document.new 使用 US-ASCII 编码的 XML 解析失败
【发布时间】:2012-03-07 08:34:18
【问题描述】:

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

我有一个类似

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

它曾经在做 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'

当改变 Header 的样子时:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby xml jruby rexml


    【解决方案1】:

    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 解析器:))

    240.89 124.39 ValorSemestralPack> 118.84 ValorContinuadoSemestralPack> 66.12 ValorTrimestralPack> 60.57 ValorContinuadoTrimestralPack> 27.28 ValorMensalPack> 21.73 ValorContinuadoMensalPack>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      相关资源
      最近更新 更多