public void WriteXml(XmlWriterImpl xmlWriter, IXdtoValue value, string localName, string namespaceUri = null, XmlTypeAssignmentEnum?typeAssignment = null, XmlFormEnum?xmlForm = null) { xmlForm = xmlForm ?? XmlFormEnum.Element; typeAssignment = typeAssignment ?? XmlTypeAssignmentEnum.Implicit; if (xmlForm == XmlFormEnum.Element) { xmlWriter.WriteStartElement(localName, namespaceUri); if (typeAssignment == XmlTypeAssignmentEnum.Implicit) { WriteTypeAttribute(xmlWriter, ValueFactory.Create(value)); } if (value == null) { xmlWriter.WriteAttribute("nil", XmlNs.xsi, "true"); } else if (value is XdtoDataObject) { WriteXdtoObject(xmlWriter, value as XdtoDataObject); } else if (value is XdtoDataValue) { var dataValue = value as XdtoDataValue; xmlWriter.WriteText(dataValue.LexicalValue); } else { xmlWriter.WriteText(value.ToString()); } xmlWriter.WriteEndElement(); } else if (xmlForm == XmlFormEnum.Attribute) { xmlWriter.WriteAttribute(localName, namespaceUri, value.ToString()); } else if (xmlForm == XmlFormEnum.Text) { xmlWriter.WriteText(value.ToString()); // TODO: XmlString ?? } else { throw new NotSupportedException("Какой-то новый тип для XML"); } }
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; } }
private void WriteFault(XmlWriterImpl writer, string faultString) { writer.WriteStartElement("Fault", xmlns_soap); writer.WriteStartElement("faultString", xmlns_soap); writer.WriteText(faultString); writer.WriteEndElement(); // faultString writer.WriteEndElement(); // Fault }
private void WriteXMLUndefined(XmlWriterImpl xmlWriter, string name, XMLForm form) { if (form == XMLForm.Element) { XmlNamespaceContext namespaceContext = xmlWriter.NamespaceContext; AddNamespaceMapping(namespaceContext, xmlWriter, "", XmlSchema.Namespace); AddNamespaceMapping(namespaceContext, xmlWriter, "xsi", XmlSchema.InstanceNamespace); xmlWriter.WriteStartElement(name); xmlWriter.WriteStartAttribute("nil", XmlSchema.InstanceNamespace); xmlWriter.WriteText("true"); xmlWriter.WriteEndAttribute(); xmlWriter.WriteEndElement(); } }
private void WriteXdtoSequence(XmlWriterImpl xmlWriter, XdtoSequence sequence) { foreach (var element in sequence) { if (element == null) { // TODO: надо ли что-нибудь делать??? } else if (element is XdtoSequenceStringElement) { xmlWriter.WriteText((element as XdtoSequenceStringElement).Text); } else if (element is XdtoSequenceValueElement) { var obj = element as XdtoSequenceValueElement; WriteXml(xmlWriter, obj.Value, obj.Property.LocalName, obj.Property.NamespaceURI, XmlTypeAssignmentEnum.Explicit, obj.Property.Form); } } }