/// <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); }
/// <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); }
/// <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); }