public override void ReadXml(XmlReader reader) { ProjectExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } if (!String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { return; } // Keep this, after reading the attributes, the reader will be // on the last attribute, and this property will return false... bool isEmptyElement = reader.IsEmptyElement; while (reader.MoveToNextAttribute()) { _properties.Add(reader.Name, reader.Value); } if (isEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (this.IsChildElement(reader.Name)) { VcProjectElement element = this.CreateChildElement(reader.Name); element.ReadXml(reader); this.AppendChild(element); } else { throw new InvalidOperationException(String.Format( "The element '{0}' is not a child element of {1}", reader.Name, TagName)); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
public override void ReadXml(XmlReader reader) { ProjectExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } string tagName = this.XmlTagName; if (!String.Equals(reader.Name, tagName, StringComparison.OrdinalIgnoreCase)) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (this.IsChildElement(reader.Name)) { VcProjectElement element = this.CreateChildElement(reader.Name); element.ReadXml(reader); this.AppendChild(element); } else { throw new InvalidOperationException(String.Format( "The element '{0}' is not a child element of {1}", reader.Name, tagName)); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, tagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }