public void restoreXml(XmlPullParser parser) {

		// NOTE: endianness intentionally omitted from XML.

		parser.start();
		while (parser.peek().isStart()) {
			String name = parser.peek().getName();

			if (name.equals(ELEM_CHAR_TYPE.name())) {
				XmlElement subel = parser.start();
				String boolStr = subel.getAttribute(ATTRIB_SIGNED.name());
				isSignedChar = SpecXmlUtils.decodeBoolean(boolStr, isSignedChar);
				parser.end(subel);
				continue;
			}
			else if (name.equals(ELEM_BITFIELD_PACKING.name())) {
				bitFieldPacking.restoreXml(parser);
				continue;
			}
			else if (name.equals(ELEM_SIZE_ALIGNMENT_MAP.name())) {
				XmlElement subel = parser.start();
				while (parser.peek().isStart()) {
					XmlElement subsubel = parser.start();
					int size = SpecXmlUtils.decodeInt(subsubel.getAttribute(ATTRIB_SIZE.name()));
					int alignment =
						SpecXmlUtils.decodeInt(subsubel.getAttribute(ATTRIB_ALIGNMENT.name()));
					sizeAlignmentMap.put(size, alignment);
					parser.end(subsubel);
				}
				parser.end(subel);
				continue;
			}

			XmlElement subel = parser.start();
			String value = subel.getAttribute(ATTRIB_VALUE.name());

			if (name.equals(ELEM_ABSOLUTE_MAX_ALIGNMENT.name())) {
				absoluteMaxAlignment = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_MACHINE_ALIGNMENT.name())) {
				machineAlignment = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_DEFAULT_ALIGNMENT.name())) {
				defaultAlignment = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_DEFAULT_POINTER_ALIGNMENT.name())) {
				defaultPointerAlignment = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_POINTER_SIZE.name())) {
				pointerSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_POINTER_SHIFT.name())) {
				pointerShift = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_CHAR_SIZE.name())) {
				charSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_WCHAR_SIZE.name())) {
				wideCharSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_SHORT_SIZE.name())) {
				shortSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_INTEGER_SIZE.name())) {
				integerSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_LONG_SIZE.name())) {
				longSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_LONG_LONG_SIZE.name())) {
				longLongSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_FLOAT_SIZE.name())) {
				floatSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_DOUBLE_SIZE.name())) {
				doubleSize = SpecXmlUtils.decodeInt(value);
			}
			else if (name.equals(ELEM_LONG_DOUBLE_SIZE.name())) {
				longDoubleSize = SpecXmlUtils.decodeInt(value);
			}
			parser.end(subel);
		}

		parser.end();

	}
Restore settings from an XML stream. This expects to see parser positioned on the
&lt;data_organization&gt; start tag.  The XML is designed to override existing language-specific
default settings which are pre-populated with {@link #getDefaultOrganization(Language)}.  This
will will ensure that the endianness setting is properly established since it is not included
in the XML.
@param parser is the XML stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataOrganizationImpl.java