public void WriteXML(XmlWriterImpl xmlWriter, IValue value, string name, XMLTypeAssignment typeAssigment = XMLTypeAssignment.Implicit, XMLForm form = XMLForm.Element) { XMLExpandedName xmlType; switch (value.DataType) { case DataType.Undefined: WriteXMLUndefined(xmlWriter, name, form); break; case DataType.String: xmlType = new XMLExpandedName(XmlSchema.InstanceNamespace, "string"); WriteXMLSimpleData(xmlWriter, name, value, xmlType, typeAssigment, form); break; case DataType.Number: xmlType = new XMLExpandedName(XmlSchema.InstanceNamespace, "decimal"); WriteXMLSimpleData(xmlWriter, name, value, xmlType, typeAssigment, form); break; case DataType.Boolean: xmlType = new XMLExpandedName(XmlSchema.InstanceNamespace, "boolean"); WriteXMLSimpleData(xmlWriter, name, value, xmlType, typeAssigment, form); break; case DataType.Date: xmlType = new XMLExpandedName(XmlSchema.InstanceNamespace, "dateTime"); WriteXMLSimpleData(xmlWriter, name, value, xmlType, typeAssigment, form); break; case DataType.Object: IRuntimeContextInstance valueObject = value.AsObject(); if (valueObject is IXDTOSerializableXML seriazable) { seriazable.WriteXML(xmlWriter, this); } else { throw RuntimeException.InvalidArgumentType(); } break; default: throw RuntimeException.InvalidArgumentType(); } }
public void WriteXML(XmlWriterImpl xmlWriter, IValue value, XMLTypeAssignment typeAssigment = XMLTypeAssignment.Implicit, XMLForm form = XMLForm.Element) { switch (value.DataType) { case DataType.Undefined: WriteXML(xmlWriter, value, "Undefined", typeAssigment, form); break; case DataType.String: WriteXML(xmlWriter, value, "string", typeAssigment, form); break; case DataType.Number: WriteXML(xmlWriter, value, "decimal", typeAssigment, form); break; case DataType.Boolean: WriteXML(xmlWriter, value, "boolean", typeAssigment, form); break; case DataType.Date: WriteXML(xmlWriter, value, "dateTime", typeAssigment, form); break; case DataType.Object: IRuntimeContextInstance valueObject = value.AsObject(); if (valueObject is IXDTOSerializableXML seriazable) { seriazable.WriteXML(xmlWriter, this); } else { throw RuntimeException.InvalidArgumentType(); } break; default: throw RuntimeException.InvalidArgumentType(); } }
private void WriteXMLSimpleData(XmlWriterImpl xmlWriter, string name, IValue value, XMLExpandedName type, XMLTypeAssignment typeAssigment, XMLForm form) { XmlNamespaceContext namespaceContext; string xmlValue = XMLString(value); switch (form) { case XMLForm.Attribute: namespaceContext = xmlWriter.NamespaceContext; AddNamespaceMapping(namespaceContext, xmlWriter, "", XmlSchema.Namespace); xmlWriter.WriteStartAttribute(name); xmlWriter.WriteText(xmlValue); xmlWriter.WriteEndAttribute(); break; case XMLForm.Text: xmlWriter.WriteText(xmlValue); break; default: xmlWriter.WriteStartElement(name); namespaceContext = xmlWriter.NamespaceContext; AddNamespaceMapping(namespaceContext, xmlWriter, "", XmlSchema.Namespace); AddNamespaceMapping(namespaceContext, xmlWriter, "xsi", XmlSchema.InstanceNamespace); if (typeAssigment == XMLTypeAssignment.Explicit) { xmlWriter.WriteStartAttribute("type", XmlSchema.InstanceNamespace); xmlWriter.WriteText(type.LocalName); xmlWriter.WriteEndAttribute(); } xmlWriter.WriteText(xmlValue); xmlWriter.WriteEndElement(); break; } }