Ruby convert single quotes to double quotes in XML

前端 未结 2 1081
失恋的感觉
失恋的感觉 2021-01-11 17:03

Despite the fact that XML attributs can be defined using single or double quotes, my user is trying to integrate my software with another one that will not accept single quo

相关标签:
2条回答
  • 2021-01-11 17:23

    I've seen this code around to do this. But it's from a 2003 mailing list post that also promises a more elegant (and supported) way of doing it. Might not be the best, but it could work, give it a try.

    REXML::Attribute.class_eval( %q^
        def to_string
          %Q[#@expanded_name="#{to_s().gsub(/"/, '"')}"]
        end
      ^ )
    
    0 讨论(0)
  • 2021-01-11 17:29

    As of Feb 2007 there's a supported way of determining the quoting character. The changes were merged into Ruby sources on Jul 2007 and should be available on all versions since 1.8.6-p110:

    require 'rexml/document'
    
    doc = REXML::Document.new
    doc.context[:attribute_quote] = :quote  # <-- Set double-quote as the attribute value delimiter
    
    root = doc.add_element('root')
    root.add_attribute('val', '123')
    
    doc.write(STDOUT)
    

    Running that yields:

    $ ruby test.rb
    <root val="123"/>
    $
    
    0 讨论(0)
提交回复
热议问题