protected override void OnReadBodyContents(XmlDictionaryReader reader) { base.OnReadBodyContents(reader); XmlReader xmlReader = reader.ReadSubtree(); using (xmlReader) { xmlReader.Read(); ResultSerializer.Deserialize(xmlReader, ResultSerializer.ResultDialect.WSTransfer, out this._entry); } reader.Read(); DirectoryControlSerializer.Deserialize(reader, out this._controls, false, false); reader.ReadEndElement(); }
public static IEnumerable <XmlDictionaryReader> GetChildElementReaders(this XmlDictionaryReader reader) { while (reader.Read()) { if (reader.IsStartElement()) { using (var child = XmlDictionaryReader.CreateDictionaryReader(reader.ReadSubtree())) { if (!child.Read()) { continue; } yield return(child); } } } }
/// <summary> /// Reads an <see cref="EndpointReference"/> from xml dictionary reader. The addressing version is defaulted to /// <see cref="WSAddressing10Constants.Elements.Address"/>. /// </summary> /// <param name="reader">The xml dictionary reader.</param> /// <returns>An <see cref="EndpointReference"/> instance.</returns> public static EndpointReference ReadFrom(XmlDictionaryReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } reader.ReadFullStartElement(); reader.MoveToContent(); if (reader.IsNamespaceUri(WSAddressing10Constants.NamespaceUri) || reader.IsNamespaceUri(WSAddressing200408Constants.NamespaceUri)) { if (reader.IsStartElement(WSAddressing10Constants.Elements.Address, WSAddressing10Constants.NamespaceUri) || reader.IsStartElement(WSAddressing10Constants.Elements.Address, WSAddressing200408Constants.NamespaceUri)) { EndpointReference er = new EndpointReference(reader.ReadElementContentAsString()); while ( reader.IsStartElement() ) { bool emptyElement = reader.IsEmptyElement; XmlReader subtreeReader = reader.ReadSubtree(); XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.Load( subtreeReader ); er._details.Add( doc.DocumentElement ); if ( !emptyElement ) { reader.ReadEndElement(); } } reader.ReadEndElement(); return er; } } return null; }