Class: Xmi::Sparx::SparxRoot
- Inherits:
-
Root
- Object
- Lutaml::Model::Serializable
- Root
- Xmi::Sparx::SparxRoot
- Defined in:
- lib/xmi/sparx/root.rb
Class Method Summary collapse
-
.fix_encoding(xml_content) ⇒ String
Fix invalid UTF-8 encoding in the XML content.
-
.parse_xml(xml_content) ⇒ SparxRoot
Parse XMI content into Ruby objects.
Methods inherited from Lutaml::Model::Serializable
Class Method Details
.fix_encoding(xml_content) ⇒ String
Fix invalid UTF-8 encoding in the XML content.
Some EA-generated XMI files contain invalid UTF-8 byte sequences that would cause parsing failures. This method replaces invalid bytes with placeholder characters.
47 48 49 50 51 52 53 |
# File 'lib/xmi/sparx/root.rb', line 47 def fix_encoding(xml_content) return xml_content if xml_content.valid_encoding? xml_content .encode("UTF-16be", invalid: :replace, replace: "?") .encode("UTF-8") end |
.parse_xml(xml_content) ⇒ SparxRoot
Parse XMI content into Ruby objects.
This method uses automatic version detection to handle different XMI namespace versions (e.g., XMI 20110701, 20131001, 20161101) and their corresponding UML versions.
33 34 35 36 37 |
# File 'lib/xmi/sparx/root.rb', line 33 def parse_xml(xml_content) xml_content = fix_encoding(xml_content) Xmi.init_versioning! Xmi::VersionRegistry.parse_with_detected_version(xml_content, self) end |