Example #1
0
    public void ReadXml(XmlReader reader)
    {
        reader.ReadStartElement(); //wrapping element

        this.name = reader.ReadElementContentAsString();
        this.extension = reader.ReadElementContentAsString();

        string tempFileName = Path.GetTempFileName();
        this.streamFileName = tempFileName;
        using (FileStream fs = File.Create(tempFileName))
        {
            byte[] buffer = new byte[1000];
            int bytesRead;
            reader.ReadStartElement();
            do
            {
                bytesRead = reader.ReadContentAsBase64(buffer, 0, buffer.Length);
                fs.Write(buffer, 0, bytesRead);
            } while (bytesRead > 0);

            reader.ReadEndElement();
        }

        reader.ReadEndElement(); //wrapping element
    }
		 void IXmlSerializable.ReadXml(XmlReader r)
		{
			r.MoveToContent();
			r.ReadStartElement("Employee");
			
			 r.ReadStartElement("Name");
			 FirstName = r.ReadElementString("First", ns);
			 LastName = r.ReadElementString("Last", ns);
			r.ReadEndElement();
			r.MoveToContent();
			 ID = Int32.Parse(r.ReadElementString("ID", ns));
			 r.ReadEndElement();
			 
		}
	private void LoadEnemies(XmlReader reader) {
		reader.ReadStartElement("Enemies");

		GameObject enemy = null;
		bool enemyToParse = reader.ReadToFollowing ("Enemy");
		Debug.Log ("Started parsing enemies..." + enemyToParse);
		do {
			if(!enemyToParse)
				break;
			
			Debug.Log ("Found an enemy");
			switch (reader.GetAttribute ("Type")) {
			case "Bat":
				enemy = Instantiate (prefabDictionary ["Bat"]);
				break;
			case "Blob":
				enemy = Instantiate (prefabDictionary ["Blob"]);
				break;
			} 
			enemy.GetComponent<Enemy> ().Load (reader);
		} while(reader.ReadToNextSibling("Enemy"));

	}
Example #4
0
        /// <summary>
        /// Write an object.
        /// </summary>
        /// <param name="context">
        /// The context.
        /// </param>
        /// <param name="writer">
        /// The writer.
        /// </param>
        /// <param name="input">
        /// The input.
        /// </param>
        private void WriteObject(AmfContext context, AmfStreamWriter writer, XmlReader input)
        {
            context.References.Add(new AmfReference {
                AmfxType = AmfxContent.Object
            });

            WriteTypeMarker(writer, Amf0TypeMarker.Object);

            string typeName = string.Empty;

            if (input.HasAttributes)
            {
                typeName = input.GetAttribute(AmfxContent.ObjectType);
            }

            var traits = new AmfTypeTraits {
                TypeName = typeName
            };

            while (input.Read())
            {
                if (input.NodeType != XmlNodeType.Element && input.Name != AmfxContent.Traits)
                {
                    continue;
                }

                if (!input.IsEmptyElement)
                {
                    XmlReader traitsReader = input.ReadSubtree();
                    traitsReader.MoveToContent();
                    traitsReader.ReadStartElement();

                    var members = new List <string>();

                    while (input.NodeType != XmlNodeType.EndElement)
                    {
                        members.Add(traitsReader.ReadElementContentAsString());
                    }

                    traits.ClassMembers = members.ToArray();
                    traitsReader.Close();
                }

                break;
            }



            // Untyped object
            if (string.IsNullOrEmpty(traits.TypeName))
            {
                WriteTypeMarker(writer, Amf0TypeMarker.Object);
            }

            // Strongly-typed object
            else
            {
                WriteTypeMarker(writer, Amf0TypeMarker.TypedObject);
                byte[] typeNameData = Encoding.UTF8.GetBytes(traits.TypeName);
                writer.Write((ushort)typeNameData.Length);
                writer.Write(typeNameData);
            }



            #region Write members

            int i = 0;

            while (input.Read())
            {
                if (input.NodeType != XmlNodeType.Element)
                {
                    continue;
                }

                string    memberName   = traits.ClassMembers[i];
                XmlReader memberReader = input.ReadSubtree();
                memberReader.MoveToContent();

                WriteUtf8(writer, memberName);
                this.WriteAmfValue(context, memberReader, writer);

                memberReader.Close();
                i++;
            }

            #endregion

            WriteUtf8(writer, string.Empty);
            WriteTypeMarker(writer, Amf0TypeMarker.ObjectEnd);
        }
Example #5
0
        // read

        void ReadXml(XmlReader reader, bool fromSerializable)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            SetFeed(CreateFeedInstance());

            reader.MoveToContent();

            if (reader.MoveToFirstAttribute())
            {
                do
                {
                    if (reader.NamespaceURI == "http://www.w3.org/2000/xmlns/")
                    {
                        continue;
                    }
                    if (reader.LocalName == "lang" && reader.NamespaceURI == "http://www.w3.org/XML/1998/namespace")
                    {
                        Feed.Language = reader.Value;
                        continue;
                    }
                    if (!TryParseAttribute(reader.LocalName, reader.NamespaceURI, reader.Value, Feed, Version) && PreserveAttributeExtensions)
                    {
                        Feed.AttributeExtensions.Add(new XmlQualifiedName(reader.LocalName, reader.NamespaceURI), reader.Value);
                    }
                } while (reader.MoveToNextAttribute());
            }

            reader.ReadStartElement();

            Collection <SyndicationItem> items = null;

            for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent())
            {
                if (reader.NodeType != XmlNodeType.Element)
                {
                    throw new XmlException("Only element node is expected under 'feed' element");
                }
                if (reader.NamespaceURI == AtomNamespace)
                {
                    switch (reader.LocalName)
                    {
                    case "author":
                        SyndicationPerson p = Feed.CreatePerson();
                        ReadPerson(reader, p);
                        Feed.Authors.Add(p);
                        continue;

                    case "category":
                        SyndicationCategory c = Feed.CreateCategory();
                        ReadCategory(reader, c);
                        Feed.Categories.Add(c);
                        continue;

                    case "contributor":
                        p = Feed.CreatePerson();
                        ReadPerson(reader, p);
                        Feed.Contributors.Add(p);
                        continue;

                    case "generator":
                        Feed.Generator = reader.ReadElementContentAsString();
                        continue;

                    // "icon" is an extension
                    case "id":
                        Feed.Generator = reader.ReadElementContentAsString();
                        continue;

                    case "link":
                        SyndicationLink l = Feed.CreateLink();
                        ReadLink(reader, l);
                        Feed.Links.Add(l);
                        continue;

                    case "logo":
                        Feed.ImageUrl = CreateUri(reader.ReadElementContentAsString());
                        continue;

                    case "rights":
                        Feed.Copyright = ReadTextSyndicationContent(reader);
                        continue;

                    case "subtitle":
                        Feed.Description = ReadTextSyndicationContent(reader);
                        continue;

                    case "title":
                        Feed.Title = ReadTextSyndicationContent(reader);
                        continue;

                    case "updated":
                        // FIXME: somehow DateTimeOffset causes the runtime crash.
                        reader.ReadElementContentAsString();
                        // Feed.LastUpdatedTime = XmlConvert.ToDateTimeOffset (reader.ReadElementContentAsString ());
                        continue;

                    case "entry":
                        if (items == null)
                        {
                            items      = new Collection <SyndicationItem> ();
                            Feed.Items = items;
                        }
                        items.Add(ReadItem(reader, Feed));
                        continue;
                    }
                }
                if (!TryParseElement(reader, Feed, Version))
                {
                    if (PreserveElementExtensions)
                    {
                        // FIXME: what to specify for maxExtensionSize
                        LoadElementExtensions(reader, Feed, int.MaxValue);
                    }
                    else
                    {
                        reader.Skip();
                    }
                }
            }

            reader.ReadEndElement();
        }
        /// <summary>
        /// Populate this object's properties from XML.
        /// </summary>
        /// <param name="reader">Source of XML data.</param>
        public void ReadXml(XmlReader reader)
        {
            Log.Trace("Reading train.");
            if (reader is null)
            {
                throw new ArgumentNullException(nameof(reader));
            }
            GraphProperties = new GraphTrainPropertiesModel();
            ToWork          = new ToWorkModel();
            LocoToWork      = new ToWorkModel();

            reader.MoveToContent();
            Id = reader.GetAttribute("Id");
            bool isEmptyElement = false;

            if (reader.IsEmptyElement)
            {
                isEmptyElement = true;
            }
            reader.ReadStartElement();
            if (isEmptyElement)
            {
                return;
            }

            reader.MoveToContent();
            if (reader.LocalName == "Headcode")
            {
                Log.Trace("Reading <Headcode>");
                Headcode = reader.ReadElementContentAsString();
                reader.MoveToContent();
            }
            if (reader.LocalName == "LocoDiagram")
            {
                Log.Trace("Reading <LocoDiagram>");
                LocoDiagram = reader.ReadElementContentAsString();
                reader.MoveToContent();
            }
            if (reader.LocalName == "TrainClassId")
            {
                Log.Trace("Reading <TrainClassId>");
                TrainClassId = reader.ReadElementContentAsString();
                reader.MoveToContent();
            }
            if (reader.LocalName == "GraphProperties")
            {
                Log.Trace("Reading <GraphProperties>");
                GraphProperties.ReadXml(reader);
                reader.MoveToContent();
            }
            if (reader.LocalName == "TrainTimes")
            {
                Log.Trace("Reading <TrainTimes>");
                ReadTrainTimes(reader);
                reader.MoveToContent();
            }
            if (reader.LocalName == "FootnoteIds")
            {
                Log.Trace("Reading <FootnoteIds>");
                ReadFootnotes(reader);
                reader.MoveToContent();
            }
            if (reader.LocalName == "IncludeSeparatorAbove")
            {
                Log.Trace("Reading <IncludeSeparatorAbove>");
                IncludeSeparatorAbove = reader.ReadElementContentAsBoolean();
                reader.MoveToContent();
            }
            if (reader.LocalName == "IncludeSeparatorBelow")
            {
                Log.Trace("Reading <IncludeSeparatorBelow>");
                IncludeSeparatorBelow = reader.ReadElementContentAsBoolean();
                reader.MoveToContent();
            }
            if (reader.LocalName == "InlineNote")
            {
                Log.Trace("Reading <InlineNote>");
                InlineNote = reader.ReadElementContentAsString();
                reader.MoveToContent();
            }
            if (reader.LocalName == "ToWork")
            {
                Log.Trace("Reading <ToWork>");
                ToWork.ReadXml(reader);
                reader.MoveToContent();
            }
            if (reader.LocalName == "LocoToWork")
            {
                Log.Trace("Reading <LocoToWork>");
                LocoToWork.ReadXml(reader);
                reader.MoveToContent();
            }
            MoveToEndElement(reader);
            reader.ReadEndElement();
        }
Example #7
0
 public void ReadXml(XmlReader reader)
 {
     reader.ReadStartElement();
     NodeDocument.File = reader.ReadString();
     reader.ReadEndElement();
 }
        private static object xmlReadObject(Object Parent, XmlReader xdr, RepositoryItemBase targetObj = null)
        {
            string ClassName = xdr.Name;

            // We do auto convert to classes which moved to GingerCoreCommon
            if (ClassName == "GingerCore.Actions.ActInputValue")
            {
                ClassName = typeof(ActInputValue).FullName;
            }
            if (ClassName == "GingerCore.Actions.ActReturnValue" || ClassName == "GingerCore.Common.Actions.ActInputValue")
            {
                ClassName = typeof(ActReturnValue).FullName;
            }
            if (ClassName == "GingerCore.Actions.EnhancedActInputValue")
            {
                ClassName = typeof(EnhancedActInputValue).FullName;
            }

            try
            {
                object obj   = null;
                int    level = xdr.Depth;

                // We first try in current assembly = GingerCore
                if (targetObj == null)
                {
                    obj = GingerCoreAssembly.CreateInstance(ClassName);
                }
                else
                {
                    obj = targetObj; //used for DeepCopy to objects fields
                }

                if (obj == null) //Ginger assembly
                {
                    if (ClassName == "Ginger.Environments.Solution")
                    {
                        ClassName = "Ginger.SolutionGeneral.Solution";
                    }
                    obj = GingerAssembly.CreateInstance(ClassName);
                    obj = System.Reflection.Assembly.Load("Ginger").CreateInstance(ClassName);
                }

                if (obj == null)
                {
                    obj = GingerCoreCommon.CreateInstance(ClassName);
                }

                if (obj == null) //GingerCoreCommon assembly
                {
                    if (ClassName == "GingerCore.Actions.ActInputValue" || ClassName == "GingerCore.Common.Actions.ActInputValue")
                    {
                        ClassName = typeof(ActInputValue).FullName;
                    }
                    if (ClassName == "GingerCore.Actions.ActReturnValue")
                    {
                        ClassName = typeof(ActReturnValue).FullName;
                    }
                    if (ClassName == "GingerCore.Environments.GeneralParam")
                    {
                        ClassName = typeof(GeneralParam).FullName;
                    }
                    if (ClassName == "Ginger.TagsLib.RepositoryItemTag")
                    {
                        ClassName = typeof(RepositoryItemTag).FullName;
                    }
                    if (ClassName == "GingerCore.Platforms.ApplicationPlatform")
                    {
                        ClassName = typeof(ApplicationPlatform).FullName;
                    }


                    obj = GingerCoreCommon.CreateInstance(ClassName);
                }


                if (obj == null) //GingerCoreNET assembly
                {
                    obj = GingerCoreNET.CreateInstance(ClassName);
                }

                if (obj == null)
                {
                    throw new Exception("Error:Cannot create Class: " + ClassName);
                }

                SetObjectAttributes(xdr, obj);

                xdr.Read();
                // Set lists attrs
                // read all object sub elements like lists - obj members
                while (xdr.Depth == level + 1)
                {
                    // Check if it one obj attr or list
                    string attrName = xdr.Name;

                    MemberInfo mi = obj.GetType().GetMember(attrName).SingleOrDefault();

                    // New to support prop and field - like BF.Activities
                    if (mi.MemberType == MemberTypes.Field)
                    {
                        FieldInfo FI = (FieldInfo)mi;
                        // We check if it is list by arg count - List<string> will have string etc...
                        // another option is check the nake to start with List, Observe...
                        //or find a better way
                        // meanwhile it is working
                        if (FI.FieldType.GenericTypeArguments.Count() > 0)
                        {
                            SetObjectListAttrs(xdr, obj);
                        }
                        else
                        {
                            // Read the attr name/move next
                            xdr.ReadStartElement();
                            // read the actual object we need to put on the attr
                            object item = xmlReadObject(obj, xdr);
                            // Set the attr val with the object
                            FI.SetValue(obj, item);

                            if (item is Email)//If should be removed- placing if for solving Run Set operation release issue with minimum risk
                            {
                                xdr.ReadEndElement();
                            }
                        }
                    }
                    else
                    {
                        PropertyInfo PI = (PropertyInfo)mi;
                        // obj.GetType().GetField(attrName);
                        // We check if it is list by arg count - List<string> will have string etc...
                        // another option is check the nake to start with List, Observe...
                        //or find a better way
                        // meanwhile it is working
                        if (PI.PropertyType.GenericTypeArguments.Count() > 0)
                        {
                            SetObjectListAttrs(xdr, obj);
                        }
                        else
                        {
                            // Read the attr name/move next
                            xdr.ReadStartElement();
                            // read the actual object we need to put on the attr
                            object item = xmlReadObject(obj, xdr);
                            // Set the attr val with the object
                            PI.SetValue(obj, item);

                            if (item is Email)//If should be removed- placing if for solving Run Set operation release issue with minimum risk
                            {
                                xdr.ReadEndElement();
                            }
                        }
                    }


                    if (xdr.NodeType == XmlNodeType.EndElement)
                    {
                        xdr.ReadEndElement();
                    }
                }
                return(obj);
            }
            catch (Exception ex)
            {
                throw new Exception("Error:Cannot create instance of: " + xdr.Name + " - " + ex.Message);
            }
        }
        public ONCollection QueryByFilter_LMD(ref string ticket, ref ONOid agentOid, XmlReader xmlReader, ONDisplaySet displaySet, out ONOid startRowOID, out int blockSize, double dtdVersion, string clientName)
        {
            ONLinkedToList lLinkedTo = null;
            ONFilterList   lFilters  = new ONFilterList();

            // Read Request
            blockSize = int.Parse(xmlReader.GetAttribute("BlockSize"));
            if (!xmlReader.IsEmptyElement)
            {
                xmlReader.ReadStartElement("Query.Filter");
                if (xmlReader.IsStartElement("StartRow"))
                {
                    xmlReader.ReadStartElement("StartRow");
                    startRowOID = XML2ON(xmlReader, dtdVersion);
                    xmlReader.ReadEndElement();                     // StartRow
                }
                else
                {
                    startRowOID = null;
                }

                // Fill relations
                lLinkedTo = GetLinkedTo(xmlReader, dtdVersion);

                // Fill filter variables
                lFilters["LMD"] = GetFilter_LMD(xmlReader, dtdVersion);

                // Read Request
                xmlReader.ReadEndElement();                 // Query.Filter
            }
            else
            {
                xmlReader.ReadStartElement("Query.Filter");
                lLinkedTo   = new ONLinkedToList();
                startRowOID = null;
            }

            // Read Order Criteria
            string lOrderCriteria = "";

            if (xmlReader.IsStartElement("Sort"))
            {
                lOrderCriteria = xmlReader.GetAttribute("Criterium");
                xmlReader.Skip();                 // Sort
            }

            //Read Filter Navigation
            if (xmlReader.IsStartElement("NavFilt"))
            {
                xmlReader.Skip();
            }

            // Create Context
            ONContext lOnContext = new ONContext();

            lOnContext.OidAgent = agentOid;

            // Execute
            lOnContext.CalculateQueryInstancesNumber = true;
            RevisionPasajeroQuery lQuery      = new RevisionPasajeroQuery(lOnContext);
            ONCollection          lCollection = lQuery.QueryByFilter(lLinkedTo, lFilters, displaySet, lOrderCriteria, startRowOID, blockSize);

            ticket = lOnContext.GetTicket(dtdVersion, clientName);

            return(lCollection);
        }
 public void ReadXml(XmlReader reader)
 {
     reader.ReadStartElement("UserConfiguration");
     if (ConfigurationDictionary.GetNode(reader, "Info") == null)
     {
         this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedNoField, "Info");
     }
     if (ConfigurationDictionary.GetAttribute(reader, "version") == null)
     {
         this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedNoField, "version");
     }
     if (reader.Value != "Exchange.12")
     {
         ExTraceGlobals.StorageTracer.TraceDebug <string>((long)this.GetHashCode(), "The version is not supported. Version = {0}.", reader.Value);
     }
     if (ConfigurationDictionary.GetNode(reader, "Data") == null)
     {
         this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedNoField, "Data");
     }
     reader.Read();
     while (reader.NodeType != XmlNodeType.EndElement)
     {
         if (reader.Name == "e" && reader.HasAttributes)
         {
             reader.MoveToFirstAttribute();
             object obj  = null;
             object obj2 = null;
             bool   flag = true;
             do
             {
                 if (reader.Name == "k")
                 {
                     if (obj == null)
                     {
                         obj = this.DeserializeObject(reader.Value);
                     }
                 }
                 else if (reader.Name == "v")
                 {
                     flag = false;
                     if (obj2 == null)
                     {
                         obj2 = this.DeserializeObject(reader.Value);
                     }
                 }
             }while (reader.MoveToNextAttribute());
             if (obj == null)
             {
                 this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedNullKey, "k");
             }
             if (flag)
             {
                 this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedNoField, "v");
             }
             if (base.Dictionary.Contains(obj))
             {
                 this.ThrowOnCorruptedData("ReadXml", ServerStrings.ExDictionaryDataCorruptedDuplicateKey(obj.ToString()), obj.ToString());
             }
             else
             {
                 base.Dictionary.Add(obj, obj2);
             }
         }
         reader.Read();
     }
 }
Example #11
0
        void IXmlSerializable.ReadXml(XmlReader reader)
        {
            if (reader.MoveToContent() != XmlNodeType.Element)
            {
                throw new InvalidOperationException();
            }

            var emptyCollection = reader.IsEmptyElement;             // check if container element is empty
            var locales         = new Dictionary <string, Locale>();

            _defaultLocale = reader.GetAttribute(_attributeDefault);
            reader.ReadStartElement();             // consume the container element tag
            if (!emptyCollection)
            {
                // children of container should each be elements representing individual collection items
                // at the end of this loop, we must be positioned past each item, whether an end element or an empty element tag
                while (reader.MoveToContent() == XmlNodeType.Element)
                {
                    var emptyItem = reader.IsEmptyElement;
                    var locale    = (Locale)null;

                    if (reader.Name == _elementLocale)
                    {
                        try
                        {
                            var culture     = reader.GetAttribute(_attributeCulture);
                            var displayName = reader.GetAttribute(_attributeDisplayName);
                            locale = new Locale(culture, displayName);
                        }
                        catch (Exception ex)
                        {
                            Platform.Log(LogLevel.Debug, ex, "Invalid installed locale definition");
                        }

                        // consume the entire element
                        if (!emptyItem)
                        {
                            reader.ReadSubtree().Close();                        // read start tag and all descendants
                            reader.ReadEndElement();                             // read end tag
                        }
                        else
                        {
                            reader.ReadStartElement();                             // read empty element tag
                        }
                    }
                    else
                    {
                        // if the child element is unrecognized, we still have to consume it!
                        //  otherwise we will not be at the right position to pick up the next item
                        if (!emptyItem)
                        {
                            reader.ReadSubtree().Close();                        // read start tag and all descendants
                            reader.ReadEndElement();                             // read end tag
                        }
                        else
                        {
                            reader.ReadStartElement();                             // read empty element tag
                        }
                    }

                    // ignore duplicate entries
                    if (locale != null && !locales.ContainsKey(locale.Culture.ToLowerInvariant()))
                    {
                        locales.Add(locale.Culture.ToLowerInvariant(), locale);
                    }
                }
            }

            _installedLocales.Clear();
            _installedLocales.AddRange(locales.Values);
            _installedLocales.Sort((x, y) => string.Compare(x.DisplayName, y.DisplayName, StringComparison.InvariantCultureIgnoreCase));
        }
        public void ReadXml(XmlReader reader)
        {
            if (reader.IsEmptyElement)
            {
                reader.Skip();
                return;
            }
            reader.ReadStartElement("MotionDataFrame");
            string lengthStr;
            int    length;

            while (reader.NodeType != XmlNodeType.None)
            {
                if (reader.NodeType == XmlNodeType.EndElement)
                {
                    break;
                }
                switch (reader.Name)
                {
                case "Points":
                    if (reader.IsEmptyElement || (lengthStr = reader.GetAttribute("Length")) == null)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        reader.ReadStartElement();
                        if (int.TryParse(lengthStr, out length))
                        {
                            string contents = reader.ReadString();
                            readPointsFromString(length, contents);
                        }
                        while (reader.NodeType != XmlNodeType.None && reader.NodeType != XmlNodeType.EndElement)
                        {
                            reader.Skip();
                        }
                        reader.ReadEndElement();
                    }
                    break;

                case "Lines":
                    if (reader.IsEmptyElement || (lengthStr = reader.GetAttribute("Length")) == null)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        reader.ReadStartElement();
                        if (int.TryParse(lengthStr, out length))
                        {
                            string contents = reader.ReadString();
                            readLinesFromString(length, contents);
                        }
                        while (reader.NodeType != XmlNodeType.None && reader.NodeType != XmlNodeType.EndElement)
                        {
                            reader.Skip();
                        }
                        reader.ReadEndElement();
                    }
                    break;

                case "Cylinders":
                    if (reader.IsEmptyElement || (lengthStr = reader.GetAttribute("Length")) == null)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        reader.ReadStartElement();
                        if (int.TryParse(lengthStr, out length))
                        {
                            string contents = reader.ReadString();
                            readCylindersFromString(length, contents);
                        }
                        while (reader.NodeType != XmlNodeType.None && reader.NodeType != XmlNodeType.EndElement)
                        {
                            reader.Skip();
                        }
                        reader.ReadEndElement();
                    }
                    break;

                case "Spheres":
                    if (reader.IsEmptyElement || (lengthStr = reader.GetAttribute("Length")) == null)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        reader.ReadStartElement();
                        if (int.TryParse(lengthStr, out length))
                        {
                            string contents = reader.ReadString();
                            ReadSpheresFromString(length, contents);
                        }
                        while (reader.NodeType != XmlNodeType.None && reader.NodeType != XmlNodeType.EndElement)
                        {
                            reader.Skip();
                        }
                        reader.ReadEndElement();
                    }
                    break;

                case "Planes":
                    if (reader.IsEmptyElement || (lengthStr = reader.GetAttribute("Length")) == null)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        reader.ReadStartElement();
                        if (int.TryParse(lengthStr, out length))
                        {
                            this.Planes = new MotionDataPlane[length];
                            int count = 0;
                            while (true)
                            {
                                if (reader.NodeType == XmlNodeType.EndElement)
                                {
                                    break;
                                }
                                if (count == length)
                                {
                                    break;
                                }
                                switch (reader.Name)
                                {
                                case "MotionDataPlane":
                                    this.Planes[count] = MotionDataPlane.Deserialize(reader);
                                    count++;
                                    break;

                                default:
                                    reader.Skip();
                                    break;
                                }
                            }
                        }
                        while (reader.NodeType != XmlNodeType.None && reader.NodeType != XmlNodeType.EndElement)
                        {
                            reader.Skip();
                        }
                        reader.ReadEndElement();
                    }
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }
            reader.ReadEndElement();
        }
 public override void ReadStartElement(string name)
 {
     _reader.ReadStartElement(name);
 }
Example #14
0
 private void ReadStartElement()
 {
     _xmlReader.ReadStartElement();
     _xmlReader.MoveToContent();
 }
            void IXmlSerializable.ReadXml(XmlReader reader)
            {
                if (!reader.IsStartElement("extensionRegistry"))
                {
                    throw new InvalidOperationException(
                              string.Concat("无效配置.期望节点是 'extensionRegistry 便实际是 '", reader.LocalName, "'."));
                }

                reader.ReadStartElement("extensionRegistry");

                if (!reader.IsStartElement("extensionPoints"))
                {
                    throw new InvalidOperationException(
                              string.Concat("无效配置.期望节点是 'extensionRegistry 便实际是 '", reader.LocalName, "'."));
                }

                if (reader.IsEmptyElement)
                {
                    reader.ReadStartElement("extensionPoints");
                }
                else
                {
                    reader.ReadStartElement("extensionPoints");

                    while (reader.IsStartElement("extensionPoint"))
                    {
                        ExtensionPointConfiguration cfg = new ExtensionPointConfiguration();
                        cfg.ReadXml(reader);
                        List <ExtensionConfiguration> extensionConfigs = new List <ExtensionConfiguration>();
                        XmlUtils.ReadElementsIntoList <ExtensionConfiguration>(reader, "extensions", "extension", extensionConfigs);

                        IExtensionPoint point = new ExtensionPoint(cfg);
                        _registry._extensionPoints.Add(point.Id, point);

                        for (int i = 0; i < extensionConfigs.Count; i++)
                        {
                            IExtension ext = new Extension(extensionConfigs[i], _extensionBuilder);
                            _registry._extensions.Add(ext.Id, ext);
                            ((ExtensionPoint)point).AddExtension(ext);
                        }
                    }

                    reader.ReadEndElement();
                }



                if (reader.IsStartElement("extensions"))
                {
                    if (reader.IsEmptyElement)
                    {
                        reader.ReadStartElement("extensions");
                    }
                    else
                    {
                        // read the orphans
                        reader.ReadStartElement("extensions");

                        while (reader.IsStartElement("extension"))
                        {
                            ExtensionConfiguration extCfg = ExtensionConfiguration.FromXml(reader);
                            if (!_registry._extensions.ContainsKey(extCfg.Id))
                            {
                                IExtension ext = new Extension(extCfg, _extensionBuilder);
                                _registry._extensions.Add(ext.Id, ext);
                            }
                        }

                        reader.ReadEndElement();
                    }
                }

                reader.ReadEndElement(); //</extensionRegistry>
            }
Example #16
0
        public void ReadXml(XmlReader reader)
        {
            if (reader.HasAttributes)
            {
                while (reader.MoveToNextAttribute())
                {
                    switch (reader.Name)
                    {
                    case "LogGUID":
                        LogGUID = reader.ReadContentAsString();
                        break;

                    case "LogFileID":
                        LogFileID = reader.ReadContentAsString();
                        break;

                    case "LogTypeKey":
                        LogTypeKey = reader.ReadContentAsString();
                        break;

                    case "LogUserID":
                        LogUserID = reader.ReadContentAsInt();
                        break;

                    case "LogEventID":
                        LogEventID = reader.ReadContentAsInt();
                        break;

                    case "LogUserName":
                        LogUserName = reader.ReadContentAsString();
                        break;

                    case "LogPortalID":
                        LogPortalID = reader.ReadContentAsInt();
                        break;

                    case "LogPortalName":
                        LogPortalName = reader.ReadContentAsString();
                        break;

                    case "LogCreateDate":
                        LogCreateDate = DateTime.Parse(reader.ReadContentAsString());
                        break;

                    case "LogCreateDateNum":
                        LogCreateDateNum = reader.ReadContentAsLong();
                        break;

                    case "BypassBuffering":
                        BypassBuffering = bool.Parse(reader.ReadContentAsString());
                        break;

                    case "LogServerName":
                        LogServerName = reader.ReadContentAsString();
                        break;

                    case "LogConfigID":
                        LogConfigID = reader.ReadContentAsString();
                        break;
                    }
                }
            }

            //Check for LogProperties child node
            reader.Read();
            if (reader.NodeType == XmlNodeType.Element && reader.LocalName == "LogProperties")
            {
                reader.ReadStartElement("LogProperties");
                if (reader.ReadState != ReadState.EndOfFile && reader.NodeType != XmlNodeType.None && !String.IsNullOrEmpty(reader.LocalName))
                {
                    LogProperties.ReadXml(reader);
                }
            }
            //Check for Exception child node
            if (reader.NodeType == XmlNodeType.Element && reader.LocalName == "Exception")
            {
                Exception.ReadXml(reader);
            }
        }
Example #17
0
        protected override void ReadXml(XmlReader reader)
        {
            reader.MoveToAttribute("Name");
            Name = reader.ReadContentAsString();
            reader.MoveToAttribute("Offset");
            Offset = (UInt16)reader.ReadContentAsInt();
            reader.MoveToElement();
            reader.ReadStartElement();

            JPCost      = (ushort)reader.ReadElementContentAsInt();
            LearnRate   = (byte)reader.ReadElementContentAsInt();
            AbilityType = (AbilityType)Enum.Parse(typeof(AbilityType), reader.ReadElementContentAsString(), true);
            LearnWithJP = reader.ReadElementContentAsBoolean();
            Action      = reader.ReadElementContentAsBoolean();
            LearnOnHit  = reader.ReadElementContentAsBoolean();
            Blank1      = reader.ReadElementContentAsBoolean();
            Unknown1    = reader.ReadElementContentAsBoolean();
            Unknown2    = reader.ReadElementContentAsBoolean();
            Unknown3    = reader.ReadElementContentAsBoolean();
            Blank2      = reader.ReadElementContentAsBoolean();
            Blank3      = reader.ReadElementContentAsBoolean();
            Blank4      = reader.ReadElementContentAsBoolean();
            Blank5      = reader.ReadElementContentAsBoolean();
            Unknown4    = reader.ReadElementContentAsBoolean();

            AIFlags = new AIFlags();
            ((IXmlSerializable)AIFlags).ReadXml(reader);

            IsNormal      = ((Offset >= 0x000) && (Offset <= 0x16F));
            IsItem        = ((Offset >= 0x170) && (Offset <= 0x17D));
            IsThrowing    = ((Offset >= 0x17E) && (Offset <= 0x189));
            IsJumping     = ((Offset >= 0x18A) && (Offset <= 0x195));
            IsCharging    = ((Offset >= 0x196) && (Offset <= 0x19D));
            IsArithmetick = ((Offset >= 0x19E) && (Offset <= 0x1A5));
            IsOther       = (Offset >= 0x1A6);
            bool IsReaction = Offset >= 422 && Offset <= 453;

            if (IsNormal || IsItem || IsReaction)
            {
                reader.MoveToAttribute("value");
                ushort effectIndex = (ushort)reader.ReadElementContentAsInt();
                reader.MoveToElement();
                reader.ReadStartElement();
                reader.ReadEndElement();

                if (IsItem)
                {
                    effectIndex &= (ushort)~ItemEffectPrefixValue;
                }

                Effect = ourContext == Context.US_PSP ? Effect.PSPEffects[effectIndex] : Effect.PSXEffects[effectIndex];
            }

            if (IsNormal)
            {
                Attributes = new AbilityAttributes(ourContext);
                ((IXmlSerializable)Attributes).ReadXml(reader);
            }
            else if (IsItem)
            {
                //ItemOffset = (ushort)reader.ReadElementContentAsInt();
                SetItemOffset((ushort)reader.ReadElementContentAsInt(), ourContext);
            }
            else if (IsThrowing)
            {
                Throwing = (ItemSubType)Enum.Parse(typeof(ItemSubType),
                                                   reader.ReadElementContentAsString(), true);
            }
            else if (IsJumping)
            {
                reader.ReadStartElement();
                JumpHorizontal = (byte)reader.ReadElementContentAsInt();
                JumpVertical   = (byte)reader.ReadElementContentAsInt();
                reader.ReadEndElement();
            }
            else if (IsCharging)
            {
                reader.ReadStartElement();
                ChargeCT    = (byte)reader.ReadElementContentAsInt();
                ChargeBonus = (byte)reader.ReadElementContentAsInt();
                reader.ReadEndElement();
            }
            else if (IsArithmetick)
            {
                ArithmetickSkill = (byte)reader.ReadElementContentAsInt();
            }
            else if (IsOther)
            {
                OtherID = (byte)reader.ReadElementContentAsInt();
            }
            else
            {
                throw new InvalidOperationException("Invalid item type");
            }


            reader.ReadEndElement();
        }
Example #18
0
        public void ReadLineXml(XmlReader r, PointF scaling)
        {
            r.ReadStartElement();
            float    length = 0;
            SegmentF line   = SegmentF.Empty;

            calibrationAxis = CalibrationAxis.LineHorizontal;

            while (r.NodeType == XmlNodeType.Element)
            {
                switch (r.Name)
                {
                case "Length":
                    length = float.Parse(r.ReadElementContentAsString(), CultureInfo.InvariantCulture);
                    break;

                case "Segment":
                    line = ParseSegment(r, scaling);
                    break;

                case "Origin":
                    // Import from older format.
                    origin = XmlHelper.ParsePointF(r.ReadElementContentAsString());
                    if (float.IsNaN(origin.X) || float.IsNaN(origin.Y))
                    {
                        origin = PointF.Empty;
                    }

                    origin = origin.Scale(scaling.X, scaling.Y);
                    break;

                case "Axis":
                    calibrationAxis = (CalibrationAxis)Enum.Parse(typeof(CalibrationAxis), r.ReadElementContentAsString());
                    break;

                case "Scale":
                    // Import and convert from older format.
                    // Create a fake line of 100 px horizontal at the origin.
                    float  bakedScale   = float.Parse(r.ReadElementContentAsString(), CultureInfo.InvariantCulture);
                    float  lengthPixels = 100;
                    PointF start        = origin;
                    PointF end          = origin.Translate(lengthPixels, 0);
                    line   = new SegmentF(start, end);
                    length = lengthPixels * bakedScale;

                    // The actual origin should be expressed in the calibrated plane coordinate system, which has its true origin at the A point of the quad.
                    origin = new PointF(0, length);
                    break;

                default:
                    string unparsed = r.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            r.ReadEndElement();

            // Update mapping.
            size      = new SizeF(length, length);
            quadImage = MakeQuad(line.Start, line.End, calibrationAxis);

            mapping.Update(new QuadrilateralF(size.Width, size.Height), quadImage);
            valid       = quadImage.IsConvex;
            initialized = true;
        }
        public ReadTypes(string path)
        {
            chart     = new List <List <float> >();
            typeNames = new List <string>();
            typeColor = new List <Color>();
            abilities = new List <Abil>();

            int typeCount = 0;

            XmlReader read = XmlReader.Create(path);

            read.ReadStartElement("Types");
            while (read.Read())
            {
                if (read.Name.Equals("Type"))
                {
                    typeNames.Add(read.GetAttribute("name"));
                    Color col = new Color();
                    col.R = Convert.ToByte(read.GetAttribute("r"));
                    col.G = Convert.ToByte(read.GetAttribute("g"));
                    col.B = Convert.ToByte(read.GetAttribute("b"));
                    //Console.WriteLine(col.R + "  " + col.G + "  " + col.B);
                    typeColor.Add(col);

                    while (!(read.NodeType == XmlNodeType.EndElement && read.Name.Equals("Type")))
                    {
                        if (read.Name.Equals("Abil") && read.NodeType == XmlNodeType.Element)
                        {
                            Abil cur = new Abil();
                            cur.name    = read.GetAttribute("name");
                            cur.markTag = read.GetAttribute("tag");
                            if (cur.markTag == null)
                            {
                                cur.mark = false;
                            }
                            else
                            {
                                cur.mark = true;
                            }
                            cur.typeIndex = typeCount;
                            read.Read();
                            //Console.WriteLine(read.Value);
                            cur.modifier = (float)(Convert.ToDouble(read.Value));
                            abilities.Add(cur);
                        }

                        if (read.Name.Equals("DefList"))
                        {
                            List <float> row = new List <float>();
                            while (!(read.NodeType == XmlNodeType.EndElement && read.Name.Equals("DefList")))
                            {
                                if (read.Name.Equals("Defending") && read.NodeType == XmlNodeType.Element)
                                {
                                    read.Read();
                                    row.Add((float)(Convert.ToDouble(read.Value)));
                                }
                                read.Read();
                            }
                            chart.Add(row);
                        }
                        read.Read();
                    }
                    typeCount++;
                }
            }
        }
        /// <summary>
        /// Creates an instance of a DpwsMetadata class.
        /// </summary>
        public DpwsMetadata(XmlReader reader, ProtocolVersion version)
        {
            reader.ReadStartElement("Metadata", WsWellKnownUri.WsxNamespaceUri);

            while (reader.IsStartElement("MetadataSection", WsWellKnownUri.WsxNamespaceUri))
            {
                reader.MoveToAttribute("Dialect");
                String dialect = reader.Value;
                reader.MoveToElement();
                reader.Read(); // MetadataSection

                if (dialect == version.WsdpNamespaceUri + "/ThisModel")
                {
#if DEBUG
                    int depth = reader.Depth;
#endif
                    this.ThisModel = new DpwsThisModel(reader, version);
#if DEBUG
                    Microsoft.SPOT.Debug.Assert(XmlReaderHelper.HasReadCompleteNode(depth, reader));
#endif
                }
                else if (dialect == version.WsdpNamespaceUri + "/ThisDevice")
                {
#if DEBUG
                    int depth = reader.Depth;
#endif
                    this.ThisDevice = new DpwsThisDevice(reader, version);
#if DEBUG
                    Microsoft.SPOT.Debug.Assert(XmlReaderHelper.HasReadCompleteNode(depth, reader));
#endif
                }
                else if (dialect == version.WsdpNamespaceUri + "/Relationship")
                {
#if DEBUG
                    int depth = reader.Depth;
#endif
                    if (this.Relationship == null)
                    {
                        this.Relationship = new DpwsRelationship(reader, version);
                    }
                    else
                    {
                        this.Relationship.Append(reader, version);
                    }

#if DEBUG
                    Microsoft.SPOT.Debug.Assert(XmlReaderHelper.HasReadCompleteNode(depth, reader));
#endif
                }
                else // known dialect
                {
                    reader.Skip();
                }

                reader.ReadEndElement(); // MetadataSection
            }

            if (this.ThisModel == null || this.ThisDevice == null || this.Relationship == null)
            {
                // Metadata must include ThisModel (R2038, R2012), ThisDevice(R2039, R2014),
                // at least one Relationship(R2040, R2029)
                throw new XmlException();
            }

            XmlReaderHelper.SkipAllSiblings(reader); // xs:any

            reader.ReadEndElement();                 // Metadata
        }
Example #21
0
        // This method handles z:Ref, xsi:nil and primitive types, and then delegates to DeserializeByMap() for anything else.

        public object Deserialize(Type type, XmlReader reader)
        {
#if !MOONLIGHT
            if (type == typeof(XmlElement))
            {
                return(XmlDocument.ReadNode(reader));
            }
            else if (type == typeof(XmlNode []))
            {
                reader.ReadStartElement();
                var l = new List <XmlNode> ();
                for (; !reader.EOF && reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent())
                {
                    l.Add(XmlDocument.ReadNode(reader));
                }
                reader.ReadEndElement();
                return(l.ToArray());
            }
#endif
            QName graph_qname = null;

            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
            {
                Type internal_type = type.GetGenericArguments() [0];

                if (types.FindUserMap(internal_type) != null)
                {
                    graph_qname = types.GetQName(internal_type);
                }
            }

            if (graph_qname == null)
            {
                graph_qname = types.GetQName(type);
            }

            string itype = reader.GetAttribute("type", XmlSchema.InstanceNamespace);
            if (itype != null)
            {
                string [] parts = itype.Split(':');
                if (parts.Length > 1)
                {
                    graph_qname = new QName(parts [1], reader.LookupNamespace(reader.NameTable.Get(parts [0])));
                }
                else
                {
                    graph_qname = new QName(itype, reader.LookupNamespace(String.Empty));
                }
            }

            string label = reader.GetAttribute("Ref", KnownTypeCollection.MSSimpleNamespace);
            if (label != null)
            {
                object o;
                if (!references.TryGetValue(label, out o))
                {
                    throw new SerializationException(String.Format("Deserialized object with reference Id '{0}' was not found", label));
                }
                reader.Skip();
                return(o);
            }

            bool isNil = reader.GetAttribute("nil", XmlSchema.InstanceNamespace) == "true";

            if (isNil)
            {
                reader.Skip();
                if (!type.IsValueType || type == typeof(void))
                {
                    return(null);
                }
                else if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
                {
                    return(null);
                }
                else
                {
                    throw new SerializationException(String.Format("Value type {0} cannot be null.", type));
                }
            }

            if (resolver != null)
            {
                Type t;
                if (resolved_qnames.TryGetValue(graph_qname, out t))
                {
                    type = t;
                }
                else                   // i.e. resolve name only once.
                {
                    type = resolver.ResolveName(graph_qname.Name, graph_qname.Namespace, type, default_resolver) ?? type;
                    resolved_qnames.Add(graph_qname, type);
                    types.Add(type);
                }
            }

            if (KnownTypeCollection.GetPrimitiveTypeFromName(graph_qname) != null)
            {
                string id = reader.GetAttribute("Id", KnownTypeCollection.MSSimpleNamespace);

                object ret = DeserializePrimitive(type, reader, graph_qname);

                if (id != null)
                {
                    if (references.ContainsKey(id))
                    {
                        throw new InvalidOperationException(String.Format("Object with Id '{0}' already exists as '{1}'", id, references [id]));
                    }
                    references.Add(id, ret);
                }
                return(ret);
            }

            return(DeserializeByMap(graph_qname, type, reader));
        }
Example #22
0
 public virtual void ReadXml(XmlReader reader)
 {
     reader.ReadStartElement("BusCommand", Context.YttriumNamespace);
     _busRef = CommandReference.Deserialize("Bus", reader);
     reader.ReadEndElement();
 }
        public override ONCollection QueryByRelated(ref string ticket, ref ONOid agentOid, XmlReader xmlReader, ONDisplaySet displaySet, out ONOid startRowOID, out int blockSize, double dtdVersion, string clientName)
        {
            ONLinkedToList lLinkedTo = null;
            ONFilterList   lFilters  = new ONFilterList();

            // Read Request
            blockSize = int.Parse(xmlReader.GetAttribute("BlockSize"));
            if (!xmlReader.IsEmptyElement)
            {
                xmlReader.ReadStartElement("Query.Related");
                if (xmlReader.IsStartElement("StartRow"))
                {
                    xmlReader.ReadStartElement("StartRow");
                    startRowOID = XML2ON(xmlReader, dtdVersion);
                    xmlReader.ReadEndElement();                     // StartRow
                }
                else
                {
                    startRowOID = null;
                }

                // Fill relations
                lLinkedTo = GetLinkedTo(xmlReader, dtdVersion);

                // Read Request
                xmlReader.ReadEndElement();                 // Query.Related
            }
            else
            {
                xmlReader.ReadStartElement("Query.Related");
                lLinkedTo   = new ONLinkedToList();
                startRowOID = null;
            }

            // Read Order Criteria
            string lOrderCriteria = "";

            if (xmlReader.IsStartElement("Sort"))
            {
                lOrderCriteria = xmlReader.GetAttribute("Criterium");
                xmlReader.Skip();                 // Sort
            }

            //Read Navigational Filter
            string lNavFilterId    = "";
            ONOid  lSelectedObject = null;

            if (xmlReader.IsStartElement("NavFilt"))
            {
                xmlReader.ReadStartElement("NavFilt");
                if (xmlReader.IsStartElement("NavFilt.SelectedObject"))
                {
                    lNavFilterId = xmlReader.GetAttribute("NavFilterID");
                    xmlReader.ReadStartElement("NavFilt.SelectedObject");
                    string lClassName = xmlReader.GetAttribute("Class");
                    if (lClassName == "")
                    {
                        lClassName = "GlobalTransaction";
                    }
                    object[] lArgs = new object[2];
                    lArgs[0]        = xmlReader;
                    lArgs[1]        = dtdVersion;
                    lSelectedObject = ONContext.InvoqueMethod(ONContext.GetType_XML(lClassName), "XML2ON", lArgs) as ONOid;

                    lArgs    = new Object[1];
                    lArgs[0] = lSelectedObject;

                    lFilters.Add(lNavFilterId, ONContext.GetComponent_NavigationalFilter(lNavFilterId, lArgs) as ONFilter);
                }
                else if (xmlReader.IsStartElement("NavFilt.Argument"))
                {
                    string lClassName = xmlReader.GetAttribute("Class");
                    if (lClassName == "")
                    {
                        lClassName = "GlobalTransaction";
                    }
                    string lServiceName  = xmlReader.GetAttribute("Service");
                    string lArgumentName = xmlReader.GetAttribute("Argument");
                    xmlReader.ReadStartElement("NavFilt.Argument");

                    string lFilterName = lClassName + "_" + lServiceName + "Service_" + lArgumentName + "_NavigationalFilter";
                    if (xmlReader.IsStartElement("Arguments"))
                    {
                        object[] lArgs = new object[3];
                        lArgs[0] = xmlReader;
                        lArgs[1] = dtdVersion;
                        lArgs[2] = lArgumentName;

                        lFilters.Add(lFilterName, ONContext.InvoqueMethod(ONContext.GetComponent_XML(lClassName), typeof(ONNavigationalFilterXMLAttribute), "<Filter>" + lServiceName + "</Filter>", lArgs) as ONFilter);
                    }
                    else
                    {
                        lFilters.Add(lFilterName, ONContext.GetComponent_Filter(lFilterName, null) as ONFilter);
                    }

                    xmlReader.ReadEndElement();                     //NavFilt.Argument
                }
                else if (xmlReader.IsStartElement("NavFilt.ServiceIU"))
                {
                    lNavFilterId = xmlReader.GetAttribute("NavFilterID");
                    xmlReader.ReadStartElement("NavFilt.ServiceIU");

                    if (xmlReader.IsStartElement("Arguments"))
                    {
                        object[] lArgs = new object[2];
                        lArgs[0] = xmlReader;
                        lArgs[1] = dtdVersion;

                        ONServiceInfo lSInfo = new ONServiceInfo("", "", "", "");
                        lSInfo.XML2ON(xmlReader, dtdVersion, false);

                        HybridDictionary lArguments = new HybridDictionary(true);
                        foreach (ONArgumentInfo lArgument in lSInfo.mArgumentList.Values)
                        {
                            lArguments.Add(lArgument.Name, lArgument.Value);
                        }
                        lFilters.Add(lNavFilterId, ONContext.GetComponent_NavigationalFilter(lNavFilterId, new object[1] {
                            lArguments
                        }) as ONFilter);
                    }
                    else
                    {
                        lFilters.Add(lNavFilterId, ONContext.GetComponent_NavigationalFilter(lNavFilterId, null) as ONFilter);
                    }

                    xmlReader.ReadEndElement();                     //NavFilt.ServiceIU
                }
                else if (xmlReader.IsStartElement("NavFilt.Variable"))
                {
                    string lClassName        = xmlReader.GetAttribute("Class");
                    string lSourceFilterName = xmlReader.GetAttribute("Filter");
                    string lVariableName     = xmlReader.GetAttribute("Variable");

                    xmlReader.ReadStartElement("NavFilt.Variable");
                    string lFilterName = lClassName + "_" + lSourceFilterName + "Filter_" + lVariableName + "_NavigationalFilter";
                    if (xmlReader.IsStartElement("Filter.Variables"))
                    {
                        object[] lArgs = new object[3];
                        lArgs[0] = xmlReader;
                        lArgs[1] = dtdVersion;
                        lArgs[2] = lVariableName;

                        lFilters.Add(lFilterName, ONContext.InvoqueMethod(ONContext.GetComponent_XML(lClassName), typeof(ONNavigationalFilterXMLAttribute), "<Filter>" + lSourceFilterName + "</Filter>", lArgs) as ONFilter);
                    }
                    else
                    {
                        lFilters.Add(lFilterName, ONContext.GetComponent_Filter(lFilterName, null) as ONFilter);
                    }

                    xmlReader.ReadEndElement();                     //NavFilt.Variable
                }
            }

            // Create Context
            ONContext lOnContext = new ONContext();

            lOnContext.OidAgent = agentOid;

            foreach (ONFilter lFilter in lFilters.Values)
            {
                lFilter.CheckFilterVariables(lOnContext);
            }

            // Execute
            lOnContext.CalculateQueryInstancesNumber = true;
            RevisionPasajeroQuery lQuery      = new RevisionPasajeroQuery(lOnContext);
            ONCollection          lCollection = lQuery.QueryByFilter(lLinkedTo, lFilters, displaySet, lOrderCriteria, startRowOID, blockSize);

            ticket = lOnContext.GetTicket(dtdVersion, clientName);

            return(lCollection);
        }
        private void ParseResHeaderNode(XmlReader reader)
        {
            string name = reader[ResXResourceWriter.NameStr];

            if (name != null)
            {
                reader.ReadStartElement();

                // The "1.1" schema requires the correct casing of the strings
                // in the resheader, however the "1.0" schema had a different
                // casing. By checking the Equals first, we should
                // see significant performance improvements.

                if (name == ResXResourceWriter.VersionStr)
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        _resHeaderVersion = reader.ReadElementString();
                    }
                    else
                    {
                        _resHeaderVersion = reader.Value.Trim();
                    }
                }
                else if (name == ResXResourceWriter.ResMimeTypeStr)
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        _resHeaderMimeType = reader.ReadElementString();
                    }
                    else
                    {
                        _resHeaderMimeType = reader.Value.Trim();
                    }
                }
                else if (name == ResXResourceWriter.ReaderStr)
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        _resHeaderReaderType = reader.ReadElementString();
                    }
                    else
                    {
                        _resHeaderReaderType = reader.Value.Trim();
                    }
                }
                else if (name == ResXResourceWriter.WriterStr)
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        _resHeaderWriterType = reader.ReadElementString();
                    }
                    else
                    {
                        _resHeaderWriterType = reader.Value.Trim();
                    }
                }
                else
                {
                    switch (name.ToLower(CultureInfo.InvariantCulture))
                    {
                    case ResXResourceWriter.VersionStr:
                        if (reader.NodeType == XmlNodeType.Element)
                        {
                            _resHeaderVersion = reader.ReadElementString();
                        }
                        else
                        {
                            _resHeaderVersion = reader.Value.Trim();
                        }
                        break;

                    case ResXResourceWriter.ResMimeTypeStr:
                        if (reader.NodeType == XmlNodeType.Element)
                        {
                            _resHeaderMimeType = reader.ReadElementString();
                        }
                        else
                        {
                            _resHeaderMimeType = reader.Value.Trim();
                        }
                        break;

                    case ResXResourceWriter.ReaderStr:
                        if (reader.NodeType == XmlNodeType.Element)
                        {
                            _resHeaderReaderType = reader.ReadElementString();
                        }
                        else
                        {
                            _resHeaderReaderType = reader.Value.Trim();
                        }
                        break;

                    case ResXResourceWriter.WriterStr:
                        if (reader.NodeType == XmlNodeType.Element)
                        {
                            _resHeaderWriterType = reader.ReadElementString();
                        }
                        else
                        {
                            _resHeaderWriterType = reader.Value.Trim();
                        }
                        break;
                    }
                }
            }
        }
        public static void ReadFolderRecursive(List <SiFolder> folders, XmlReader reader, int depth)
        {
            SiFolder newFolder = null;

            while (!reader.EOF)
            {
                XmlNodeType nodeType = reader.NodeType;
                switch (nodeType)
                {
                case XmlNodeType.Whitespace:
                    reader.Read();
                    break;

                case XmlNodeType.Element:
                    switch (reader.Name)
                    {
                    case "Files":
                        reader.ReadStartElement();
                        ReadFolderRecursive(folders, reader, reader.Depth);
                        break;

                    case "File":
                        SiFile newFile = new SiFile();
                        folders.Last().Files.Add(newFile);
                        newFile.Filename = reader.GetAttribute("Name");
                        reader.ReadStartElement();
                        break;

                    case "Folders":
                        int newDepth = reader.Depth;
                        if (newDepth < depth)
                        {
                            return;
                        }

                        if (newDepth == depth)
                        {
                            newFolder      = new SiFolder();
                            newFolder.Name = reader.GetAttribute("Name");
                            folders.Add(newFolder);
                            reader.ReadStartElement();
                        }
                        else
                        {
                            if (newFolder.Folders == null)
                            {
                                newFolder.Folders = new List <SiFolder>();
                            }
                            ReadFolderRecursive(newFolder.Folders, reader, newDepth);
                        }
                        break;

                    default:
                        reader.ReadStartElement();
                        break;
                    }
                    break;

                case XmlNodeType.Attribute:
                    break;

                default:
                    reader.Read();
                    break;
                }
            }
        }
Example #26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="transaction"></param>
        internal static void Read(XmlReader reader, Transaction transaction, bool preApproval)
        {
            if (reader.IsEmptyElement)
            {
                XMLParserUtils.SkipNode(reader);
                return;
            }

            if (preApproval == true)
            {
                reader.ReadStartElement(TransactionSerializerHelper.PreApproval);
            }
            else
            {
                reader.ReadStartElement(TransactionSerializerHelper.Transaction);
            }
            reader.MoveToContent();

            while (!reader.EOF)
            {
                if (preApproval == true)
                {
                    if (XMLParserUtils.IsEndElement(reader, TransactionSerializerHelper.PreApproval))
                    {
                        XMLParserUtils.SkipNode(reader);
                        break;
                    }
                }
                else
                {
                    if (XMLParserUtils.IsEndElement(reader, TransactionSerializerHelper.Transaction))
                    {
                        XMLParserUtils.SkipNode(reader);
                        break;
                    }
                }

                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case TransactionSerializerHelper.Code:
                        transaction.Code = reader.ReadElementContentAsString();
                        break;

                    case TransactionSerializerHelper.Date:
                        transaction.Date = reader.ReadElementContentAsDateTime();
                        break;

                    case TransactionSerializerHelper.Reference:
                        transaction.Reference = reader.ReadElementContentAsString();
                        break;

                    case TransactionSerializerHelper.TransactionType:
                        transaction.TransactionType = reader.ReadElementContentAsInt();
                        break;

                    case TransactionSerializerHelper.TransactionStatus:
                        if (preApproval == true)
                        {
                            transaction.Status = reader.ReadElementContentAsString();
                        }
                        else
                        {
                            transaction.TransactionStatus = reader.ReadElementContentAsInt();
                        }
                        break;

                    case TransactionSerializerHelper.GrossAmount:
                        transaction.GrossAmount = reader.ReadElementContentAsDecimal();
                        break;

                    case TransactionSerializerHelper.DiscountAmount:
                        transaction.DiscountAmount = reader.ReadElementContentAsDecimal();
                        break;

                    case TransactionSerializerHelper.FeeAmount:
                        transaction.FeeAmount = reader.ReadElementContentAsDecimal();
                        break;

                    case TransactionSerializerHelper.NetAmount:
                        transaction.NetAmount = reader.ReadElementContentAsDecimal();
                        break;

                    case TransactionSerializerHelper.ExtraAmount:
                        transaction.ExtraAmount = reader.ReadElementContentAsDecimal();
                        break;

                    case TransactionSerializerHelper.LastEventDate:
                        transaction.LastEventDate = reader.ReadElementContentAsDateTime();
                        break;

                    case TransactionSerializerHelper.InstallmentCount:
                        transaction.InstallmentCount = reader.ReadElementContentAsInt();
                        break;

                    case TransactionSerializerHelper.Name:
                        transaction.Name = reader.ReadElementContentAsString();
                        break;

                    case TransactionSerializerHelper.Tracker:
                        transaction.Tracker = reader.ReadElementContentAsString();
                        break;

                    case TransactionSerializerHelper.Charge:
                        transaction.Charge = reader.ReadElementContentAsString();
                        break;

                    case PaymentMethodSerializer.PaymentMethod:
                        PaymentMethod paymentMethod = new PaymentMethod();
                        PaymentMethodSerializer.Read(reader, paymentMethod);
                        transaction.PaymentMethod = paymentMethod;
                        break;

                    case ItemListSerializer.Items:
                        ItemListSerializer.Read(reader, transaction.Items);
                        break;

                    case SenderSerializer.Sender:
                        Sender sender = new Sender();
                        SenderSerializer.Read(reader, sender);
                        transaction.Sender = sender;
                        break;

                    case ShippingSerializer.Shipping:
                        Shipping shipping = new Shipping();
                        ShippingSerializer.Read(reader, shipping);
                        transaction.Shipping = shipping;
                        break;

                    default:
                        XMLParserUtils.SkipElement(reader);
                        break;
                    }
                }
                else
                {
                    XMLParserUtils.SkipNode(reader);
                }
            }
        }
Example #27
0
        public override void ReadXml(XmlReader reader)
        {
            reader.MoveToContent();

            reader.ReadStartElement();
            {
                LastDomOperation = reader.GetAttribute("LastDomOperation");
                string needsSignatureAttribute = reader.GetAttribute("NeedsSignature");
                if (!string.IsNullOrEmpty(needsSignatureAttribute))
                {
                    NeedsSignature = bool.Parse(needsSignatureAttribute);
                }
                AlternativeIdentifier = reader.GetAttribute("AlternativeIdentifier");
                CertHash = reader.GetAttribute("CertHash");
                IdCardId = reader.GetAttribute("IdCardId");
                Issuer   = reader.GetAttribute("Issuer");
                Password = reader.GetAttribute("Password");
                Username = reader.GetAttribute("Username");
                Version  = reader.GetAttribute("Version");
                var authenticationLevelAttribute = reader.GetAttribute("AuthenticationLevel");
                if (!string.IsNullOrEmpty(authenticationLevelAttribute))
                {
                    AuthenticationLevel = AuthenticationLevel.GetEnumeratedValue(int.Parse(authenticationLevelAttribute));
                }

                while (reader.Read())
                {
                    if (reader.IsStartElement())
                    {
                        if (reader.Name == "CreatedDate")
                        {
                            reader.ReadStartElement();
                            this.CreatedDate = (DateTime) new XmlSerializer(typeof(DateTime)).Deserialize(reader);
                            reader.ReadEndElement();
                        }
                        if (reader.Name == "ExpiryDate")
                        {
                            reader.ReadStartElement();
                            this.ExpiryDate = (DateTime) new XmlSerializer(typeof(DateTime)).Deserialize(reader);
                            reader.ReadEndElement();
                        }
                        if (reader.Name == "Xassertion")
                        {
                            reader.ReadStartElement();
                            //this.Xassertion = XElement.ReadFrom(reader.ReadSubtree()).Parent;
                            this.Xassertion = XElement.Parse(reader.ReadOuterXml(), LoadOptions.PreserveWhitespace);
                        }
                        if (reader.Name == "SystemInfo")
                        {
                            this.SystemInfo = new SystemInfo(null, null);
                            (this.SystemInfo as IXmlSerializable).ReadXml(reader);
                        }
                        if (reader.Name == "UserInfo")
                        {
                            this.UserInfo = new UserInfo(null, null, null, null, null, null, null);
                            (this.UserInfo as IXmlSerializable).ReadXml(reader);
                        }
                    }
                }
            }
            //reader.ReadEndElement();
        }
Example #28
0
        public void ReadXML(XmlReader reader)
        {
            reader.ReadStartElement();

            while (reader.NodeType == XmlNodeType.Element)
            {
                switch (reader.Name)
                {
                case "TimecodeFormat":
                    timecodeFormat = (TimecodeFormat)Enum.Parse(typeof(TimecodeFormat), reader.ReadElementContentAsString());
                    break;

                case "SpeedUnit":
                    speedUnit = (SpeedUnit)Enum.Parse(typeof(SpeedUnit), reader.ReadElementContentAsString());
                    break;

                case "AccelerationUnit":
                    accelerationUnit = (AccelerationUnit)Enum.Parse(typeof(AccelerationUnit), reader.ReadElementContentAsString());
                    break;

                case "AngleUnit":
                    angleUnit = (AngleUnit)Enum.Parse(typeof(AngleUnit), reader.ReadElementContentAsString());
                    break;

                case "AngularVelocityUnit":
                    angularVelocityUnit = (AngularVelocityUnit)Enum.Parse(typeof(AngularVelocityUnit), reader.ReadElementContentAsString());
                    break;

                case "AngularAccelerationUnit":
                    angularAccelerationUnit = (AngularAccelerationUnit)Enum.Parse(typeof(AngularAccelerationUnit), reader.ReadElementContentAsString());
                    break;

                case "CustomLengthUnit":
                    customLengthUnit = reader.ReadElementContentAsString();
                    break;

                case "CustomLengthAbbreviation":
                    customLengthAbbreviation = reader.ReadElementContentAsString();
                    break;

                case "AspectRatio":
                    aspectRatio = (ImageAspectRatio)Enum.Parse(typeof(ImageAspectRatio), reader.ReadElementContentAsString());
                    break;

                case "DeinterlaceByDefault":
                    deinterlaceByDefault = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "InteractiveFrameTracker":
                    interactiveFrameTracker = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "WorkingZoneMemory":
                    workingZoneMemory = reader.ReadElementContentAsInt();
                    break;

                case "SyncLockSpeed":
                    syncLockSpeed = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "SyncByMotion":
                    syncByMotion = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "ImageFormat":
                    imageFormat = (KinoveaImageFormat)Enum.Parse(typeof(KinoveaImageFormat), reader.ReadElementContentAsString());
                    break;

                case "VideoFormat":
                    videoFormat = (KinoveaVideoFormat)Enum.Parse(typeof(KinoveaVideoFormat), reader.ReadElementContentAsString());
                    break;

                case "Background":
                    backgroundColor = XmlHelper.ParseColor(reader.ReadElementContentAsString(), defaultBackgroundColor);
                    break;

                case "InfoFading":
                    defaultFading.ReadXml(reader);
                    break;

                case "DrawOnPlay":
                    drawOnPlay = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "RecentColors":
                    ParseRecentColors(reader);
                    break;

                case "MaxRecentColors":
                    maxRecentColors = reader.ReadElementContentAsInt();
                    break;

                case "TrackingProfile":
                    trackingProfile.ReadXml(reader);
                    break;

                case "EnableFiltering":
                    enableFiltering = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "EnableCustomToolsDebugMode":
                    enableCustomToolsDebugMode = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "DefaultReplaySpeed":
                    string str = reader.ReadElementContentAsString();
                    defaultReplaySpeed = float.Parse(str, CultureInfo.InvariantCulture);
                    break;

                case "DetectImageSequences":
                    detectImageSequences = XmlHelper.ParseBoolean(reader.ReadElementContentAsString());
                    break;

                case "PreloadKeyframes":
                    preloadKeyframes = reader.ReadElementContentAsInt();
                    break;

                case "PlaybackKVA":
                    playbackKVA = reader.ReadElementContentAsString();
                    break;

                default:
                    reader.ReadOuterXml();
                    break;
                }
            }

            reader.ReadEndElement();
        }
        public void ReadXml(XmlReader reader)
        {
            if (reader.IsEmptyElement)
            {
                reader.Read();
                return;
            }

            XmlSerializer keySerializer   = null;
            XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
            Type          keyType         = typeof(TKey);
            bool          isFlatKey       = (keyType.FullName == "System.String" || keyType.FullName == "System.Drawing.Point" || keyType.IsEnum);

            if (!isFlatKey)
            {
                keySerializer = new XmlSerializer(typeof(TKey));
            }

            reader.Read();
            while (reader.ReadToNextSibling(this.ItemNodeName))
            {
                TKey   key;
                TValue value;
                if (isFlatKey)
                {
                    if (keyType.FullName == "System.String")
                    {
                        key = (TKey)(object)reader.GetAttribute(this.KeyNodeName);
                    }
                    else if (keyType.FullName == "System.Drawing.Point")
                    {
                        key = (TKey)(object)PointEx.Parse(reader.GetAttribute(this.KeyNodeName));
                    }
                    else if (keyType.IsEnum)
                    {
                        string keyRaw = reader.GetAttribute(this.KeyNodeName);
                        if (keyRaw == null)
                        {
                            throw new FormatException(
                                      $"The XML-Attribute \"{this.KeyNodeName}\" is missing on element \"{reader.Name}\"."
                                      );
                        }

                        key = (TKey)Enum.Parse(keyType, keyRaw);
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }

                    reader.ReadStartElement(this.ItemNodeName);
                    value = (TValue)valueSerializer.Deserialize(reader);
                }
                else
                {
                    reader.ReadStartElement(this.ItemNodeName);

                    reader.ReadStartElement(this.KeyNodeName);
                    key = (TKey)keySerializer.Deserialize(reader);
                    reader.ReadEndElement();

                    reader.ReadStartElement(this.ValueNodeName);
                    value = (TValue)valueSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }
                reader.ReadEndElement();

                this.Add(key, value);
            }

            reader.ReadEndElement();
        }
Example #30
0
        private void LoadSettings(ref bool UseLastFile, ref bool CompileBeforeUpload, ref string OpenedFile)
        {
            if (File.Exists(Path.Combine("Tools", "Settings.xml")))
            {
                XmlReader reader = null;
                try
                {
                    reader = XmlReader.Create(Path.Combine("Tools", "Settings.xml"));
                    reader.ReadStartElement("Settings");
                    string open     = reader.ReadElementString("OpenLastFile");
                    string compile  = reader.ReadElementString("CompileBeforeUpload");
                    string LastFile = reader.ReadElementString("LastFile");
                    string Optim    = reader.ReadElementString("Optimalize");
                    string Brd      = reader.ReadElementString("Board");

                    reader.Close();

                    if (open == "1")
                    {
                        UseLastFile = true;
                    }
                    else
                    {
                        UseLastFile = false;
                    }

                    if (compile == "1")
                    {
                        CompileBeforeUpload = true;
                    }
                    else
                    {
                        CompileBeforeUpload = false;
                    }

                    if (Optim == "Size")
                    {
                        Optimalize = Optimalize.Size;
                    }
                    else
                    {
                        Optimalize = Optimalize.Speed;
                    }

                    Board = (Board)Convert.ToInt32(Brd);


                    OpenedFile = LastFile;

                    if (LastFile == "" || !UseLastFile)
                    {
                        OpenedFile = FindNewNumber();
                    }

                    OpenNewTab(OpenedFile);
                }
                catch (Exception)
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                    File.Delete(Path.Combine("Tools", "Settings.xml"));
                }
            }

            if (!File.Exists(Path.Combine("Tools", "Settings.xml")))
            {
                UseLastFile         = false;
                CompileBeforeUpload = true;
                string max = "0";

                foreach (FileInfo file in new DirectoryInfo("Projects").GetFiles("Project_*.cpp"))
                {
                    max = file.Name.Substring(8, file.Name.Length - 8 - 4);
                }
                OpenedFile = Path.Combine("Projects", "Project_" + (Convert.ToInt32(max) + 1) + ".cpp");
                SaveSettings(UseLastFile, CompileBeforeUpload, OpenedFile);

                OpenNewTab(OpenedFile);
            }
        }
Example #31
0
        /// <summary>
        ///     Reads the XML.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <exception cref="InvalidDataException">
        ///     Invalid XML document for Db import. index is unset
        ///     or
        ///     Invalid XML document for Db import. type is unset
        ///     or
        ///     or
        ///     Invalid XML document for Db import. index for a table is unset
        /// </exception>
        public void ReadXml(XmlReader reader)
        {
            reader.Read();
            reader.ReadStartElement(DatabaseName);
            reader.ReadStartElement(ReprosIncluded);

            var elements = new Dictionary <string, Type>();

            do
            {
                var indexOfElementString = reader.GetAttribute("Index");
                var typeString           = reader.GetAttribute("Type");
                if (indexOfElementString == null)
                {
                    throw new InvalidDataException("Invalid XML document for Db import. index is unset");
                }

                if (typeString == null)
                {
                    throw new InvalidDataException("Invalid XML document for Db import. type is unset");
                }

                var type = Type.GetType(typeString);

                if (type == null)
                {
                    throw new InvalidDataException(string.Format("Invalid XML document for Db import. type is invalid '{0}'",
                                                                 typeString));
                }

                elements.Add(indexOfElementString, type);
            } while (reader.Read() && reader.Name == ReproIncluded);
            reader.ReadEndElement();
            reader.ReadStartElement(DatabaseContent);
            using (var transaction = new TransactionScope())
            {
                using (DbReposetoryIdentityInsertScope.CreateOrObtain())
                {
                    do
                    {
                        var indexOfElementString = reader.GetAttribute("Index");
                        if (indexOfElementString == null)
                        {
                            throw new InvalidDataException("Invalid XML document for Db import. index for a table is unset");
                        }
                        reader.ReadStartElement(TableContentList);
                        var type  = elements[indexOfElementString];
                        var table =
                            LocalDbManager.Scope.Database.First(s => s.Key.AssemblyQualifiedName == type.AssemblyQualifiedName).Value;
                        if (table == null)
                        {
                            throw new InvalidDataException("Invalid Database config for Db import. There is no Table for the type " + type);
                        }
                        reader.ReadStartElement(TableContentElementsList);
                        do
                        {
                            object emptyElement = table.TypeInfo.DefaultFactory();
                            reader.ReadStartElement(table.TypeInfo.TableName);
                            do
                            {
                                var propName = reader.Name;
                                var isNumm   = reader.IsEmptyElement;

                                var value = reader.ReadElementContentAsString();
                                var dbPropertyInfoCache = table.TypeInfo.Propertys[table.TypeInfo.SchemaMappingDatabaseToLocal(propName)];

                                object contvertedValue = value;
                                if (!isNumm)
                                {
                                    if (DataConverterExtensions.ChangeType(ref contvertedValue,
                                                                           dbPropertyInfoCache.PropertyType))
                                    {
                                        dbPropertyInfoCache.Setter.Invoke(emptyElement, contvertedValue);
                                    }
                                }
                            } while (reader.Name != table.TypeInfo.TableName);
                            reader.ReadEndElement();

                            table.Add(emptyElement);
                        } while (reader.Name == table.TypeInfo.TableName);

                        reader.ReadEndElement();
                        //for newer indexer tags. Currently unsupported
                        if (reader.Name == IndexerIncluded)
                        {
                            reader.ReadStartElement(IndexerIncluded);
                            reader.ReadEndElement();
                        }
                    } while (reader.Name != DatabaseContent);
                    transaction.Complete();
                }
            }
        }
Example #32
0
        private void InternalRead(XmlReader reader)
        {
            _ancestors.Clear();
            reader.MoveToContent();
            reader.ReadStartElement(DilxElementName, DilxNamespace);
            while (reader.MoveToContent() == XmlNodeType.Element)
            {
                if
                (
                    String.Equals(reader.Name, AncestorElementName, StringComparison.OrdinalIgnoreCase) &&
                    String.Equals(reader.NamespaceURI, DilxNamespace, StringComparison.OrdinalIgnoreCase)
                )
                {
                    if (!reader.MoveToAttribute(AncestorDocumentAttributeName))
                    {
                        throw new BOPException(BOPException.Codes.InvalidNode, reader.Name);
                    }
                    _ancestors.Add(reader.Value);
                    reader.Skip();
                }
                else if
                (
                    String.Equals(reader.Name, DocumentElementName, StringComparison.OrdinalIgnoreCase) &&
                    String.Equals(reader.NamespaceURI, DilxNamespace, StringComparison.OrdinalIgnoreCase)
                )
                {
                    reader.ReadStartElement();
                    // NOTE: This mechanism was added to prevent non-space whitespace from being converted to spaces by attribute normalization when reading the embedded document
                    // However, the use of a CDATA section makes the resulting DFDXs unreadable, so the writer will no longer write this way, but the reader must still be able to
                    // read content this way.
                    // Support either CDATA (new method) or direct embedding of the interface (for backwards compatability)
                    if (reader.MoveToContent() == XmlNodeType.CDATA)
                    {
                        _content = reader.ReadContentAsString();
                    }
                    else
                    {
                        _content = reader.ReadOuterXml();
                        // If we are reading as an Xml document, entities in attribute values will be converted to tab characters.
                        // These must be converted back to entities or they will be normalized away by subsequent xml readers.
                        _content = ConvertSignificantWhitespaceToEntities(_content);
                    }

                    // Strip out the dilx namespace due to embedding of document withing outer document
                    // TODO: Refactor this to actually parse the arguments
                    string defaultNamespace = String.Format("xmlns=\"{0}\"", DilxNamespace);
                    int    contentIndex     = _content.IndexOf(defaultNamespace);
                    if (contentIndex >= 0)
                    {
                        _content = _content.Remove(contentIndex, defaultNamespace.Length);
                    }

                    // Make sure there is nothing after the document node
                    reader.Skip();
                    while (reader.MoveToContent() == XmlNodeType.EndElement)
                    {
                        reader.Skip();
                    }
                    if (!reader.EOF)
                    {
                        throw new BOPException(BOPException.Codes.DocumentElementLast);
                    }

                    return;
                }
                else
                {
                    throw new BOPException(BOPException.Codes.InvalidNode, reader.Name);
                }
            }
            throw new BOPException(BOPException.Codes.DocumentElementRequired);
        }
        public static void ReadObject(XmlReader reader, object obj, PropertyConversionHandler handler = null)
        {
            if (obj == null)
                throw new ArgumentNullException("obj");

            reader.MoveToContent();

            if (obj is IXmlSerializable)
            {
                ((IXmlSerializable)obj).ReadXml(reader);
            }
            else
            {
                object oVal = null;
                string oName = GetAttributeValue(obj.GetType(), typeof(XmlRootAttribute), "ElementName", true, ref oVal) ? oVal.ToString() : obj.GetType().Name;
                if (reader.LocalName != oName)
                    throw new XmlException("XML element name does not match object.");

                if (!reader.IsEmptyElement)
                {
                    reader.ReadStartElement();
                    reader.MoveToContent();
                    ReadObjectProperties(reader, obj, handler);
                    reader.ReadEndElement();
                }
                else
                    reader.Skip();
            }
        }
Example #34
0
        PlistObjectBase LoadFromNode(XmlReader reader)
        {
            Debug.Assert(reader.NodeType == XmlNodeType.Element);
            bool isEmpty = reader.IsEmptyElement;

            switch (reader.LocalName)
            {
            case "dict":
                var dict = new PlistDictionary(true);
                if (!isEmpty)
                {
                    if (reader.ReadToDescendant("key"))
                    {
                        dict = LoadDictionaryContents(reader, dict);
                    }
                    reader.ReadEndElement();
                }
                return(dict);

            case "array":
                if (isEmpty)
                {
                    return(new PlistArray());
                }

                //advance to first node
                reader.ReadStartElement();
                while (reader.Read() && reader.NodeType != XmlNodeType.Element)
                {
                    ;
                }

                // HACK: plist data in iPods is not even valid in some cases! Way to go Apple!
                // This hack checks to see if they really meant for this array to be a dict.
                if (reader.LocalName == "key")
                {
                    var ret = LoadDictionaryContents(reader, new PlistDictionary(true));
                    reader.ReadEndElement();
                    return(ret);
                }

                var arr = new PlistArray();
                do
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        var val = LoadFromNode(reader);
                        if (val != null)
                        {
                            arr.Add(val);
                        }
                    }
                } while (reader.Read() && reader.NodeType != XmlNodeType.EndElement);
                reader.ReadEndElement();
                return(arr);

            case "string":
                return(new PlistString(reader.ReadElementContentAsString()));

            case "integer":
                return(new PlistInteger(reader.ReadElementContentAsInt()));

            case "real":
                return(new PlistReal(reader.ReadElementContentAsFloat()));

            case "false":
                reader.ReadStartElement();
                if (!isEmpty)
                {
                    reader.ReadEndElement();
                }
                return(new PlistBoolean(false));

            case "true":
                reader.ReadStartElement();
                if (!isEmpty)
                {
                    reader.ReadEndElement();
                }
                return(new PlistBoolean(true));

            case "data":
                return(new PlistData(reader.ReadElementContentAsString()));

            case "date":
#if NETFX_CORE
                return(new PlistDate(DateTime.Parse(reader.ReadElementContentAsString())));
#else
                return(new PlistDate(reader.ReadElementContentAsDateTime()));
#endif
            default:
                throw new XmlException(String.Format("Plist Node `{0}' is not supported", reader.LocalName));
            }
        }