Beispiel #1
0
        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");
            }
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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
        }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
 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);
         }
     }
 }