public static ShapeInfo FromXml(Client client, SXL.XElement shape_el) { var info = new ShapeInfo(); info.ID = shape_el.Attribute("id").Value; client.WriteVerbose( "Reading shape id={0}", info.ID); info.Label = shape_el.Attribute("label").Value; info.Stencil = shape_el.Attribute("stencil").Value; info.Master = shape_el.Attribute("master").Value; info.Element = shape_el; info.URL = XmlUtil.GetAttributeValue(shape_el, "url", null); info.custprops = new Dictionary<string, VACUSTPROP.CustomPropertyCells>(); foreach (var customprop_el in shape_el.Elements("customprop")) { string cp_name = customprop_el.Attribute("name").Value; string cp_value = customprop_el.Attribute("value").Value; var cp = new VACUSTPROP.CustomPropertyCells(); cp.Value = cp_value; info.custprops.Add(cp_name,cp); } return info; }