protected void XukOutRegisteredTypes(XmlWriter destination, Uri baseUri, progress.IProgressHandler handler) { foreach (TypeAndQNames tp in mRegisteredTypeAndQNames) { destination.WriteStartElement(Type_NAME.z(PrettyFormat), XukAble.XUK_NS); destination.WriteAttributeString(XukLocalName_NAME.z(PrettyFormat), tp.QName.LocalName.z(PrettyFormat)); destination.WriteAttributeString(XukNamespaceUri_NAME.z(PrettyFormat), tp.QName.NamespaceUri); if (tp.BaseQName != null) { DebugFix.Assert(!string.IsNullOrEmpty(tp.BaseQName.LocalName.Pretty) || !string.IsNullOrEmpty(tp.BaseQName.LocalName.Ugly)); destination.WriteAttributeString(BaseXukLocalName_NAME.z(PrettyFormat), tp.BaseQName.LocalName.z(PrettyFormat)); destination.WriteAttributeString(BaseXukNamespaceUri_NAME.z(PrettyFormat), tp.BaseQName.NamespaceUri); } if (tp.Type != null) { tp.AssemblyName = tp.Type.Assembly.GetName(); tp.ClassName = tp.Type.FullName; } if (tp.AssemblyName != null) { destination.WriteAttributeString(AssemblyName_NAME.z(PrettyFormat), tp.AssemblyName.Name); destination.WriteAttributeString(AssemblyVersion_NAME.z(PrettyFormat), tp.AssemblyName.Version.ToString()); } if (tp.ClassName != null) { destination.WriteAttributeString(FullName_NAME.z(PrettyFormat), tp.ClassName); } destination.WriteEndElement(); } }
/// <summary> /// Reads a child of a XukAble xuk element. /// </summary> /// <param name="source">The source <see cref="XmlReader"/></param> /// <param name="handler">The handler of progress</param> protected override void XukInChild(XmlReader source, progress.IProgressHandler handler) { if (RegisteredTypes_NAME.Match(source.LocalName) && source.NamespaceURI == XukAble.XUK_NS) { XukInRegisteredTypes(source, handler); return; } base.XukInChild(source, handler); }
/// <summary> /// Write the child elements of a XukAble element. /// </summary> /// <param name="destination">The destination <see cref="XmlWriter"/></param> /// <param name="baseUri"> /// The base <see cref="Uri"/> used to make written <see cref="Uri"/>s relative, /// if <c>null</c> absolute <see cref="Uri"/>s are written /// </param> /// <param name="handler">The handler for progress</param> protected override void XukOutChildren(XmlWriter destination, Uri baseUri, progress.IProgressHandler handler) { destination.WriteStartElement(RegisteredTypes_NAME.z(PrettyFormat), XukAble.XUK_NS); XukOutRegisteredTypes(destination, baseUri, handler); destination.WriteEndElement(); base.XukOutChildren(destination, baseUri, handler); }
protected override void XukInChild(XmlReader source, progress.IProgressHandler handler) { if (source.LocalName == XukStrings.RegisteredTypes && source.NamespaceURI == XukAble.XUK_NS) { XukInRegisteredTypes(source, handler); } else if (!Presentation.Project.PrettyFormat) { XukInRegisteredType(source); } //we're replacing the super class method completely //base.XukInChild(source, handler); }
protected override void XukOutChildren(XmlWriter destination, Uri baseUri, progress.IProgressHandler handler) { if (Presentation.Project.PrettyFormat) { destination.WriteStartElement(XukStrings.RegisteredTypes, XukAble.XUK_NS); } XukOutRegisteredTypes(destination, baseUri, handler); if (Presentation.Project.PrettyFormat) { destination.WriteEndElement(); } //we're replacing the super class method completely //base.XukOutChildren(destination, baseUri, handler); }
protected void XukInRegisteredTypes(XmlReader source, progress.IProgressHandler handler) { if (!source.IsEmptyElement) { while (source.Read()) { if (source.NodeType == XmlNodeType.Element) { XukInRegisteredType(source); } else if (source.NodeType == XmlNodeType.EndElement) { break; } if (source.EOF) { throw new XukException("Unexpectedly reached EOF"); } } } }