private ContentFileV2.Target ReadTargetElement() { ContentFileV2.Target target = new ContentFileV2.Target(); target.LineNumber = ((IXmlLineInfo)reader).LineNumber; target.Name = reader.GetAttribute("Name"); if (String.IsNullOrWhiteSpace(target.Name)) { throw new XmlException("Target 'Name' attribute must be set"); } target.Inputs = reader.GetAttribute("Inputs"); if (target.Inputs == null) { target.Inputs = String.Empty; } target.Inputs = target.Inputs.Trim(); target.Outputs = reader.GetAttribute("Outputs"); if (String.IsNullOrWhiteSpace(target.Outputs)) { throw new XmlException("'Outputs' attribute must be set"); } target.Outputs = target.Outputs.Trim(); reader.ReadStartElement(); reader.MoveToContent(); // Is there a nested PropertyGroup? if (reader.NodeType == XmlNodeType.Element && String.ReferenceEquals(propertyGroupAtom, reader.Name)) { target.Properties = ReadPropertyGroupElement(); } // Is there a separate Target end tag? if (reader.NodeType == XmlNodeType.EndElement && String.ReferenceEquals(targetAtom, reader.Name)) { reader.ReadEndElement(); reader.MoveToContent(); } return(target); }
private ContentFileV2.Target ReadTargetElement() { ContentFileV2.Target target = new ContentFileV2.Target(); target.LineNumber = ((IXmlLineInfo)reader).LineNumber; target.Name = reader.GetAttribute("Name"); if (String.IsNullOrWhiteSpace(target.Name)) throw new XmlException("Target 'Name' attribute must be set"); target.Inputs = reader.GetAttribute("Inputs"); if (target.Inputs == null) target.Inputs = String.Empty; target.Inputs = target.Inputs.Trim(); target.Outputs = reader.GetAttribute("Outputs"); if (String.IsNullOrWhiteSpace(target.Outputs)) throw new XmlException("'Outputs' attribute must be set"); target.Outputs = target.Outputs.Trim(); reader.ReadStartElement(); reader.MoveToContent(); // Is there a nested PropertyGroup? if (reader.NodeType == XmlNodeType.Element && String.ReferenceEquals(propertyGroupAtom, reader.Name)) { target.Properties = ReadPropertyGroupElement(); } // Is there a separate Target end tag? if (reader.NodeType == XmlNodeType.EndElement && String.ReferenceEquals(targetAtom, reader.Name)) { reader.ReadEndElement(); reader.MoveToContent(); } return target; }
private ContentFileV2 ReadContentElement() { ContentFileV2 data = new ContentFileV2(); string version = reader.GetAttribute("Version"); if (String.IsNullOrEmpty(version)) { throw new XmlException("Version attribute not present"); } if (version != "2") { throw new XmlException("Version attribute must be 2"); } reader.ReadStartElement(contentAtom); reader.MoveToContent(); data.Items = new List <ContentFileV2.Item>(); data.Targets = new List <ContentFileV2.Target>(); while (true) { if (String.ReferenceEquals(reader.Name, contentAtom)) { reader.ReadEndElement(); reader.MoveToContent(); break; } if (reader.NodeType == XmlNodeType.Element) { if (String.ReferenceEquals(reader.Name, itemGroupAtom)) { List <ContentFileV2.Item> items = ReadItemGroupElement(); data.Items.AddRange(items); continue; } else if (String.ReferenceEquals(reader.Name, targetAtom)) { ContentFileV2.Target target = ReadTargetElement(); foreach (var otherTarget in data.Targets) { if (String.CompareOrdinal(target.Name, otherTarget.Name) == 0) { throw new XmlException("Duplicate target name '{0}'".CultureFormat(target.Name)); } } data.Targets.Add(target); continue; } } throw new XmlException("Expected ItemGroup, PropertyGroup or Target element"); } return(data); }