Module: ActiveSupport::XmlMini_JDOM
Overview
:nodoc:
Constant Summary collapse
- CONTENT_KEY =
"__content__"
Instance Method Summary collapse
-
#parse(data) ⇒ Object
Parse an XML Document string or IO into a simple hash using Java’s jdom.
Instance Method Details
#parse(data) ⇒ Object
Parse an XML Document string or IO into a simple hash using Java’s jdom.
- data
-
XML Document string or IO to parse
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/active_support/xml_mini/jdom.rb', line 26 def parse(data) if data.respond_to?(:read) data = data.read end if data.blank? {} else @dbf = DocumentBuilderFactory.new_instance # secure processing of java xml # https://archive.is/9xcQQ @dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) @dbf.setFeature("http://xml.org/sax/features/external-general-entities", false) @dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false) @dbf.setFeature(javax.xml.XMLConstants::FEATURE_SECURE_PROCESSING, true) xml_string_reader = StringReader.new(data) xml_input_source = InputSource.new(xml_string_reader) doc = @dbf.new_document_builder.parse(xml_input_source) merge_element!({ CONTENT_KEY => "" }, doc.document_element, XmlMini.depth) end end |