public void SetProjectExtension(XmlElement value) { AssertCanModify(); var sr = new StringReader(value.OuterXml); var xr = new XmlTextReader(sr); xr.MoveToContent(); var cr = new MSBuildXmlReader { XmlReader = xr }; var section = value.LocalName; MSBuildXmlElement elem = new MSBuildXmlElement(); elem.Read(cr); int i = ChildNodes.FindIndex(n => (n is MSBuildXmlElement) && ((MSBuildXmlElement)n).Name == section); if (i == -1) { ChildNodes = ChildNodes.Add(elem); } else { ChildNodes = ChildNodes.RemoveAt(i); ChildNodes = ChildNodes.Insert(i, elem); } elem.ParentNode = this; elem.ResetIndent(false); NotifyChanged(); }
internal override void ReadChildElement(MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup(); break; case "PropertyGroup": ob = new MSBuildPropertyGroup(); break; case "ImportGroup": ob = new MSBuildImportGroup(); break; case "Import": ob = new MSBuildImport(); break; case "Target": ob = new MSBuildTarget(); break; case "Choose": ob = new MSBuildChoose(); break; case "ProjectExtensions": ob = new MSBuildProjectExtensions(); break; default: ob = new MSBuildXmlElement(); break; } if (ob != null) { ob.ParentNode = this; ob.Read(reader); ChildNodes = ChildNodes.Add(ob); } else { base.ReadChildElement(reader); } }
string ReadValue(MSBuildXmlReader reader) { if (reader.IsEmptyElement) { rawValue = EmptyElementMarker; reader.Skip(); return(string.Empty); } MSBuildXmlElement elem = new MSBuildXmlElement(); elem.ParentNode = this; elem.ReadContent(reader); if (elem.ChildNodes.Count == 0) { StartInnerWhitespace = elem.StartInnerWhitespace; EndInnerWhitespace = elem.EndInnerWhitespace; rawValue = elem.GetInnerXml(); return(string.Empty); } if (elem.ChildNodes.Count == 1) { var node = elem.ChildNodes [0] as MSBuildXmlValueNode; if (node != null) { StartInnerWhitespace = elem.StartInnerWhitespace; StartInnerWhitespace = MSBuildWhitespace.AppendSpace(StartInnerWhitespace, node.StartWhitespace); EndInnerWhitespace = node.EndWhitespace; EndInnerWhitespace = MSBuildWhitespace.AppendSpace(EndInnerWhitespace, elem.EndInnerWhitespace); if (node is MSBuildXmlTextNode) { textValue = node.Value; return(node.Value.Trim()); } else if (node is MSBuildXmlCDataNode) { rawValue = "<![CDATA[" + node.Value + "]]>"; return(node.Value); } } } if (elem.ChildNodes.Any(n => n is MSBuildXmlElement)) { return(elem.GetInnerXml()); } else { rawValue = elem.GetInnerXml(); return(elem.GetText()); } }
internal virtual void ReadChildElement(MSBuildXmlReader reader) { if (reader.ForEvaluation && !ContentRequiredForEvaluation) { reader.Skip(); } else { var n = new MSBuildXmlElement(); n.Read(reader); n.ParentNode = this; ChildNodes = ChildNodes.Add(n); } }
internal override void ReadChildElement (MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup (); break; case "PropertyGroup": ob = new MSBuildPropertyGroup (); break; case "ImportGroup": ob = new MSBuildImportGroup (); break; case "Choose": ob = new MSBuildChoose (); break; default: ob = new MSBuildXmlElement (); break; } if (ob != null) { ob.ParentNode = this; ob.Read (reader); ChildNodes = ChildNodes.Add (ob); } else reader.Read (); }
internal override void ReadChildElement(MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup(); break; case "PropertyGroup": ob = new MSBuildPropertyGroup(); break; case "ImportGroup": ob = new MSBuildImportGroup(); break; case "Choose": ob = new MSBuildChoose(); break; default: ob = new MSBuildXmlElement(); break; } ob.ParentNode = this; ob.Read(reader); ChildNodes = ChildNodes.Add(ob); }
void WriteValue(XmlWriter writer, WriteContext context, string value) { if (value == null) { value = string.Empty; } // This code is from Microsoft.Build.Internal.Utilities if (value.IndexOf('<') != -1) { // If the value looks like it probably contains XML markup ... try { var sr = new StringReader("<a>" + value + "</a>"); var elem = new MSBuildXmlElement(); using (var xr = new XmlTextReader(sr)) { xr.MoveToContent(); var cr = new MSBuildXmlReader { XmlReader = xr }; elem.Read(cr); } elem.ParentNode = this; elem.SetNamespace(Namespace); elem.StartWhitespace = StartWhitespace; elem.EndWhitespace = EndWhitespace; elem.ResetChildrenIndent(); elem.WriteContent(writer, context); return; } catch (XmlException) { // But that may fail, in the event that "value" is not really well-formed // XML. Eat the exception and fall through below ... } } // The value does not contain valid XML markup. Write it as text, so it gets // escaped properly. writer.WriteValue(value); }
public void SetProjectExtension (XmlElement value) { AssertCanModify (); var sr = new StringReader (value.OuterXml); var xr = new XmlTextReader (sr); xr.MoveToContent (); var cr = new MSBuildXmlReader { XmlReader = xr }; var section = value.LocalName; MSBuildXmlElement elem = new MSBuildXmlElement (); elem.Read (cr); int i = ChildNodes.FindIndex (n => (n is MSBuildXmlElement) && ((MSBuildXmlElement)n).Name == section); if (i == -1) ChildNodes = ChildNodes.Add (elem); else { ChildNodes = ChildNodes.RemoveAt (i); ChildNodes = ChildNodes.Insert (i, elem); } elem.ParentNode = this; elem.ResetIndent (false); NotifyChanged (); }
internal virtual void ReadChildElement (MSBuildXmlReader reader) { if (reader.ForEvaluation) reader.Skip (); else { var n = new MSBuildXmlElement (); n.Read (reader); n.ParentNode = this; ChildNodes = ChildNodes.Add (n); } }
void WriteValue (XmlWriter writer, WriteContext context, string value) { if (value == null) value = string.Empty; // This code is from Microsoft.Build.Internal.Utilities if (value.IndexOf('<') != -1) { // If the value looks like it probably contains XML markup ... try { var sr = new StringReader ("<a>"+ value + "</a>"); var elem = new MSBuildXmlElement (); using (var xr = new XmlTextReader (sr)) { xr.MoveToContent (); var cr = new MSBuildXmlReader { XmlReader = xr }; elem.Read (cr); } elem.ParentNode = this; elem.SetNamespace (MSBuildProject.Schema); elem.StartWhitespace = StartWhitespace; elem.EndWhitespace = EndWhitespace; elem.ResetChildrenIndent (); elem.WriteContent (writer, context); return; } catch (XmlException) { // But that may fail, in the event that "value" is not really well-formed // XML. Eat the exception and fall through below ... } } // The value does not contain valid XML markup. Write it as text, so it gets // escaped properly. writer.WriteValue (value); }
string ReadValue (MSBuildXmlReader reader) { if (reader.IsEmptyElement) { rawValue = EmptyElementMarker; reader.Skip (); return string.Empty; } MSBuildXmlElement elem = new MSBuildXmlElement (); elem.ParentNode = this; elem.ReadContent (reader); if (elem.ChildNodes.Count == 0) { StartInnerWhitespace = elem.StartInnerWhitespace; EndInnerWhitespace = elem.EndInnerWhitespace; rawValue = elem.GetInnerXml (); return string.Empty; } if (elem.ChildNodes.Count == 1) { var node = elem.ChildNodes [0] as MSBuildXmlValueNode; if (node != null) { StartInnerWhitespace = elem.StartInnerWhitespace; StartInnerWhitespace = MSBuildWhitespace.AppendSpace (StartInnerWhitespace, node.StartWhitespace); EndInnerWhitespace = node.EndWhitespace; EndInnerWhitespace = MSBuildWhitespace.AppendSpace (EndInnerWhitespace, elem.EndInnerWhitespace); if (node is MSBuildXmlTextNode) { textValue = node.Value; return node.Value.Trim (); } else if (node is MSBuildXmlCDataNode) { rawValue = "<![CDATA[" + node.Value + "]]>"; return node.Value; } } } if (elem.ChildNodes.Any (n => n is MSBuildXmlElement)) return elem.GetInnerXml (); else { rawValue = elem.GetInnerXml (); return elem.GetText (); } }