private void SaveVsaItems(XmlDocument project, XmlElement parent){
XmlElement vsaItems = project.CreateElement("VsaItems");
foreach (IVsaItem item in this.vsaItems){
XmlElement vsaItem = project.CreateElement("IVsaItem");
this.CreateAttribute(project, vsaItem, "Name", item.Name);
this.CreateAttribute(project, vsaItem, "ItemType", item.ItemType.ToString(CultureInfo.InvariantCulture));
XmlElement vsaItemOptions = project.CreateElement("Options");
if (item is VsaHostObject){
// VsaItemType.AppGlobal
this.CreateAttribute(project, vsaItem, "TypeString", ((VsaHostObject)item).TypeString);
this.CreateAttribute(project, vsaItem, "ExposeMembers", ((VsaHostObject)item).ExposeMembers.ToString(CultureInfo.InvariantCulture));
}else if (item is VsaReference){
// VsaItemType.Reference
CreateAttribute(project, vsaItem, "AssemblyName", ((VsaReference)item).AssemblyName);
}else if (item is VsaStaticCode){
// VsaItemType.Code
string escapedText = ((VsaStaticCode)item).SourceText.Replace(">", " >");
XmlCDataSection source = project.CreateCDataSection(escapedText);
vsaItem.AppendChild(source);
string codebase = (string)item.GetOption("codebase");
if (codebase != null)
this.AddChildAndValue(project, vsaItemOptions, "codebase", codebase);
}else
throw new VsaException(VsaError.SaveElementFailed);
((VsaItem)item).IsDirty = false;
vsaItem.AppendChild(vsaItemOptions);
vsaItems.AppendChild(vsaItem);
}
parent.AppendChild(vsaItems);
}