internal static List <Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem> > ReadListOfFormatString(XmlReader reader, string property) { AssertElement(reader, property); var formatString = new List <Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem> >(); reader.ReadStartElement(); //Argument while (reader.NodeType != XmlNodeType.EndElement || !reader.Name.Equals(property)) { AssertElement(reader, "Argument"); var formatStr = new Tokenizer.HeaderTokenMatch(); formatStr.ArgumentName = reader.GetAttribute("Name"); reader.ReadStartElement(); //Content var child = DocumentExtenstions.CreateDocumentValueItemInstance(reader.Name); var childTree = reader.ReadSubtree(); childTree.Read(); child.ReadXml(childTree); reader.Skip(); reader.ReadEndElement(); //Argument formatString.Add(new Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem>(formatStr, child)); } return(formatString); }
/// <inheritdoc /> protected override void DeSerializeXml(XmlReader reader) { base.DeSerializeXml(reader); if (reader.NodeType == XmlNodeType.EndElement && reader.Name.Equals(nameof(Value))) { reader.ReadEndElement(); //end of value } if (reader.NodeType == XmlNodeType.EndElement && reader.Name.Equals(GetType().Name)) { FormatString = new Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem> [0]; return; } AssertElement(reader, nameof(TargetFormatterName)); if (!reader.IsEmptyElement) { reader.ReadStartElement(); //start of TargetFormatterName TargetFormatterName = reader.ReadString(); reader.ReadEndElement(); //end of TargetFormatterName } else { TargetFormatterName = null; reader.ReadStartElement(); //end of TargetFormatterName } if (reader.NodeType == XmlNodeType.EndElement && reader.Name.Equals(GetType().Name)) { FormatString = new Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem> [0]; return; } AssertElement(reader, nameof(FormatString)); var formatString = new List <Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem> >(); reader.ReadStartElement(); //Argument while (reader.NodeType != XmlNodeType.EndElement || !reader.Name.Equals(nameof(FormatString))) { AssertElement(reader, "Argument"); var formatStr = new Tokenizer.HeaderTokenMatch(); formatStr.ArgumentName = reader.GetAttribute("Name"); reader.ReadStartElement(); //Content var child = DocumentExtenstions.CreateDocumentValueItemInstance(reader.Name); var childTree = reader.ReadSubtree(); childTree.Read(); child.ReadXml(childTree); reader.Skip(); reader.ReadEndElement(); //Argument formatString.Add(new Tuple <Tokenizer.HeaderTokenMatch, IValueDocumentItem>(formatStr, child)); } FormatString = formatString.ToArray(); }
/// <inheritdoc /> protected override void DeSerializeXml(XmlReader reader) { base.DeSerializeXml(reader); AssertElement(reader, nameof(Value)); reader.ReadEndElement(); AssertElement(reader, nameof(Partial)); reader.ReadStartElement(); var child = DocumentExtenstions.CreateDocumentItemInstance(reader.Name); var childTree = reader.ReadSubtree(); childTree.Read(); child.DeSerializeXmlCore(childTree); reader.Skip(); Partial = child; }
/// <inheritdoc /> void IDocumentItem.DeSerializeXmlCore(XmlReader reader) { AssertElement(reader, GetSerializedMarkerName(GetType())); var charLoc = reader.GetAttribute(nameof(ExpressionStart)); if (charLoc != null) { ExpressionStart = CharacterLocation.FromFormatString(charLoc); } if (!reader.IsEmptyElement) { var readSubtree = reader.ReadSubtree(); readSubtree.Read(); DeSerializeXml(readSubtree); if (reader.Name == "Children" || reader.ReadToFollowing(nameof(Children))) { reader.ReadStartElement(); //nameof(Children) while (!reader.Name.Equals(nameof(Children)) && reader.NodeType != XmlNodeType.EndElement) { var child = DocumentExtenstions.CreateDocumentItemInstance(reader.Name); var childTree = reader.ReadSubtree(); childTree.Read(); child.DeSerializeXmlCore(childTree); reader.Skip(); Children.Add(child); } reader.ReadEndElement(); //nameof(Children) } if (reader.NodeType == XmlNodeType.EndElement && reader.Name.Equals(GetSerializedMarkerName(GetType()))) { //there are no children and we have reached the end of the document reader.ReadEndElement(); //GetType().Name } } }