/// <summary> /// This reads and sets its state or attributes stored in a <c>XML</c> format /// with the given reader. /// </summary> /// <param name="reader"> /// The reader with which the <c>XML</c> attributes of this object are accessed. /// </param> /// <exception cref="ArgumentNullException"> /// If the <paramref name="reader"/> is <see langword="null"/>. /// </exception> public override void ReadXml(XmlReader reader) { BuildExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } if (!String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { Debug.Assert(false, String.Format( "The element name '{0}' does not match the expected '{1}'.", reader.Name, TagName)); return; } if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name.ToLower()) { case "propertygroup": this.ReadXmlGeneral(reader); break; case "location": _styleDir = BuildDirectoryPath.ReadLocation(reader); break; case "presentation": _stylePresentation = BuildFilePath.ReadLocation(reader); break; case "contents": this.ReadXmlContents(reader); break; } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
/// <summary> /// This reads and sets its state or attributes stored in a <c>XML</c> format /// with the given reader. /// </summary> /// <param name="reader"> /// The reader with which the <c>XML</c> attributes of this object are accessed. /// </param> /// <exception cref="ArgumentNullException"> /// If the <paramref name="reader"/> is <see langword="null"/>. /// </exception> public override void ReadXml(XmlReader reader) { BuildExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } if (!String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { Debug.Assert(false, String.Format( "The element name '{0}' does not match the expected '{1}'.", reader.Name, TagName)); return; } if (reader.IsEmptyElement) { return; } string nodeText = null; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (String.Equals(reader.Name, "propertyGroup", StringComparison.OrdinalIgnoreCase)) { this.ReadXmlGeneral(reader); } else if (String.Equals(reader.Name, "logo", StringComparison.OrdinalIgnoreCase)) { nodeText = reader.GetAttribute("enabled"); if (!String.IsNullOrEmpty(nodeText)) { _logoEnabled = Convert.ToBoolean(nodeText); } nodeText = reader.GetAttribute("alignment"); if (!String.IsNullOrEmpty(nodeText)) { _logoAlignment = (BuildLogoAlignment)Enum.Parse( typeof(BuildLogoAlignment), nodeText, true); } nodeText = reader.GetAttribute("placement"); if (!String.IsNullOrEmpty(nodeText)) { _logoPlacement = (BuildLogoPlacement)Enum.Parse( typeof(BuildLogoPlacement), nodeText, true); } nodeText = reader.GetAttribute("width"); if (!String.IsNullOrEmpty(nodeText)) { _logoWidth = Convert.ToInt32(nodeText); } nodeText = reader.GetAttribute("height"); if (!String.IsNullOrEmpty(nodeText)) { _logoHeight = Convert.ToInt32(nodeText); } nodeText = reader.GetAttribute("padding"); if (!String.IsNullOrEmpty(nodeText)) { _logoPadding = Convert.ToInt32(nodeText); } if (!reader.IsEmptyElement) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "text": _logoText = reader.ReadString(); break; case "link": _logoLink = reader.ReadString(); break; case "image": _logoImage = BuildFilePath.ReadLocation(reader); break; } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "logo", StringComparison.OrdinalIgnoreCase)) { break; } } } } } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }