Module: ActiveSupport::XmlMini_JDOM
Overview
:nodoc:
Constant Summary collapse
- CONTENT_KEY =
"__content__"
- NODE_TYPE_NAMES =
%w{ATTRIBUTE_NODE CDATA_SECTION_NODE COMMENT_NODE DOCUMENT_FRAGMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE ELEMENT_NODE ENTITY_NODE ENTITY_REFERENCE_NODE NOTATION_NODE PROCESSING_INSTRUCTION_NODE TEXT_NODE}
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
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/active_support/xml_mini/jdom.rb', line 33 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 |