class Xlsxrb::Ooxml::SharedStringsParser
SAX-based parser for xl/sharedStrings.xml. Returns an Array of strings (index = SST index).
Constants
- XML_ENTITIES
Public Class Methods
(untyped xml_string, ?part_name: untyped) ?{ (?) → untyped } → untyped
Source
# File lib/xlsxrb/ooxml/shared_strings_parser.rb, line 31 def self.each_event(xml_string, part_name: "xl/sharedStrings.xml", &block) return enum_for(:each_event, xml_string, part_name: part_name) unless block return if xml_string.nil? || xml_string.empty? index = 0 fast_scan(xml_string) do |str| block.call(Event.new( type: :sst_item, args: [str], source: { part: part_name, index: index } )) index += 1 end end
Yields Event objects for each shared string.
(untyped xml_string, ?_part_name: untyped) → untyped
Source
# File lib/xlsxrb/ooxml/shared_strings_parser.rb, line 15 def self.parse(xml_string, _part_name: "xl/sharedStrings.xml") return [] if xml_string.nil? || xml_string.empty? if xml_string.include?("<!DOCTYPE") || xml_string.include?("<!ENTITY") listener = Class.new { include REXML::SAX2Listener }.new XmlParser.parse(xml_string, listener) end strings = [] fast_scan(xml_string) do |str| strings << str end strings end
Parses all shared strings and returns an Array of strings.