コード例 #1
0
        /// <summary>
        /// Updates the children.
        /// </summary>
        /// <param name="reader">
        /// The reader.
        /// </param>
        /// <param name="writer">
        /// The writer.
        /// </param>
        protected override void UpdateChildren(XmlReader reader, XmlWriter writer)
        {
            while (!reader.EOF)
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName == XD.ELEMENT_RESSOURCE)
                {
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element && reader.LocalName == XD.ELEMENT_VALUE)
                {
                    var langattr = reader.GetAttribute(XD.ATTRIBUTE_LANG);
                    if (langattr == this._ressource.Culture.TwoLetterISOLanguageName)
                    {
                        reader.Skip();
                    }
                    else
                    {
                        writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_VALUE, XD.NAMESPACE);
                        writer.WriteAttributes(reader, true);
                        XmlBuilderTool.WriteToEndElement(reader, writer, XD.ELEMENT_VALUE);
                        writer.WriteEndElement();
                    }
                }
                else
                {
                    XmlBuilderTool.ReadAndWriteToNextStartOrEndElement(reader, writer);
                }
            }

            this.WriteChildren(writer);
        }
コード例 #2
0
        /// <summary>
        /// Updates the children.
        /// </summary>
        /// <param name="reader">
        /// The reader.
        /// </param>
        /// <param name="writer">
        /// The writer.
        /// </param>
        protected override void UpdateChildren(XmlReader reader, XmlWriter writer)
        {
            while (!reader.EOF)
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName == XD.ELEMENT_RESSOURCES)
                {
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element && reader.LocalName == XD.ELEMENT_RESSOURCE)
                {
                    var idattr   = reader.GetAttribute(XD.ATTRIBUTE_ID);
                    var typeattr = reader.GetAttribute(XD.ATTRIBUTE_TYPE);
                    var type     = Type.GetType(typeattr, false, true);
                    if (type != null)
                    {
                        if (this._editInfo.RemovedRessources[type].ToList().Contains(idattr))
                        {
                            reader.Skip();
                        }
                        else
                        {
                            var ressource = this._editInfo.AddedRessources.FirstOrDefault(x => x.Id == idattr && type == x.GetType());
                            if (ressource != null)
                            {
                                var ressourceParser = new RessourceNodeXmlBuilder(ressource);
                                ressourceParser.Update(reader, writer);
                                this._editInfo.AddedRessources.Remove(ressource);
                            }
                            else
                            {
                                writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_RESSOURCE, XD.NAMESPACE);
                                reader.MoveToElement();
                                writer.WriteAttributes(reader, true);
                                XmlBuilderTool.WriteToEndElement(reader, writer, XD.ELEMENT_RESSOURCE);
                                writer.WriteEndElement();
                            }
                        }
                    }
                    else
                    {
                        reader.Skip();
                    }
                }
                else
                {
                    XmlBuilderTool.ReadAndWriteToNextStartOrEndElement(reader, writer);
                }
            }

            this.WriteChildren(writer);
        }
コード例 #3
0
ファイル: RessourceXmlBuilder.cs プロジェクト: Nidkfr/Shiva
        /// <summary>
        /// Updates the children.
        /// </summary>
        /// <param name="reader">
        /// The reader.
        /// </param>
        /// <param name="writer">
        /// The writer.
        /// </param>
        protected override void UpdateChildren(XmlReader reader, XmlWriter writer)
        {
            do
            {
                if (reader.LocalName == XD.ELEMENT_RESSOURCES)
                {
                    var node = new RessourcesNodeXmlBuilder(this._editInfo);
                    node.Update(reader, writer);
                    this.RessourceCheck = true;
                }

                if (reader.LocalName == XD.ELEMENT_GROUPS)
                {
                    var node = new GroupsNodeXmlBuilder(this._editInfo);
                    node.Update(reader, writer);
                    this.GroupsCheck = true;
                }
                XmlBuilderTool.ReadAndWriteToNextStartOrEndElement(reader, writer);
            }while (!reader.EOF);

            this.WriteChildren(writer);
        }
コード例 #4
0
        /// <summary>
        /// Updates the children.
        /// </summary>
        /// <param name="reader">
        /// The reader.
        /// </param>
        /// <param name="writer">
        /// The writer.
        /// </param>
        protected override void UpdateChildren(XmlReader reader, XmlWriter writer)
        {
            while (!reader.EOF)
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName == XD.ELEMENT_GROUPS)
                {
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element && reader.LocalName == XD.ELEMENT_GROUP)
                {
                    var idattr = reader.GetAttribute(XD.ATTRIBUTE_ID);
                    if (this._ressourceInfo.RemovedGroups.Contains((Identity)idattr))
                    {
                        reader.Skip();
                    }
                    else
                    {
                        if (this._ressourceInfo.AddedGroups.Any(x => x.Key.Id == idattr))
                        {
                            var grps = this._ressourceInfo.AddedGroups.Where(x => x.Key.Id == idattr).ToList();

                            writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_GROUP, XD.NAMESPACE);
                            writer.WriteStartAttribute(XD.ATTRIBUTE_ID);
                            writer.WriteValue(idattr);
                            writer.WriteEndAttribute();

                            foreach (var grp in grps)
                            {
                                var subtreeReader      = reader.ReadSubtree();
                                var detachedRessources = this._ressourceInfo.DetachedRessourceGroups.ContainsKey(grp.Key) ? this._ressourceInfo.DetachedRessourceGroups[grp.Key] : new List <Identity>();
                                var attachedRessource  = grp.Value.ToList();
                                while (subtreeReader.ReadToFollowing(XD.ELEMENT_RESSOURCE, XD.NAMESPACE))
                                {
                                    var resIdAttr = subtreeReader.GetAttribute(XD.ATTRIBUTE_ID);
                                    if (detachedRessources.Contains((Identity)resIdAttr))
                                    {
                                        continue;
                                    }

                                    writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_RESSOURCE, XD.NAMESPACE);
                                    writer.WriteAttributes(subtreeReader, true);
                                    writer.WriteEndElement();
                                    attachedRessource.Remove(resIdAttr);
                                }
                                foreach (var ressourceId in attachedRessource)
                                {
                                    writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_RESSOURCE, XD.NAMESPACE);
                                    writer.WriteStartAttribute(XD.ATTRIBUTE_ID);
                                    writer.WriteValue(ressourceId);
                                    writer.WriteEndAttribute();
                                    writer.WriteStartAttribute(XD.ATTRIBUTE_TYPE);
                                    writer.WriteValue(grp.Key.RessourceTargetType.FullName);
                                    writer.WriteEndAttribute();
                                    writer.WriteEndElement();
                                }
                                this._ressourceInfo.AddedGroups.Remove(grp);
                            }
                            writer.WriteEndElement();
                        }
                        else
                        {
                            writer.WriteStartElement(XD.PREFIX, XD.ELEMENT_GROUP, XD.NAMESPACE);
                            writer.WriteAttributes(reader, true);
                            XmlBuilderTool.WriteToEndElement(reader, writer, XD.ELEMENT_GROUP);
                            writer.WriteEndElement();
                        }
                    }
                }
                else
                {
                    XmlBuilderTool.ReadAndWriteToNextStartOrEndElement(reader, writer);
                }
            }

            this.WriteChildren(writer);
        }