private XmlNode GetSelectedAttributesXml(XmlDocument doc, AttributeSet attrSet) { XmlNode attrSetNode = doc.CreateElement(ATTRIBUTE_SET); XmlUtility.AddAttributeNode(doc, attrSetNode, ID, attrSet.attributeSetID.ToString()); if (attrSet.Attribute != null) { foreach (Attribute attr in attrSet.Attribute) { XmlNode attrNode = XmlUtility.AddChild(doc, attrSetNode, ATTRIBUTE); XmlUtility.AddAttributeNode(doc, attrNode, ID, attr.attributeID.ToString()); XmlNode valueElement; Value val; if (attr.Type == AttributeTypes.ATTR_ID) { CheckSingleValueListItem(attr); val = (Value)attr.Value[0]; valueElement = XmlUtility.AddChild(doc, attrNode, VALUE); XmlUtility.AddAttributeNode(doc, valueElement, ID, val.ValueID); if (val.ValueID == (int)ValueIds.OTHER && val.ValueLiteral != null) { // Add one more Attribute node with the same id. XmlNode attrOther = XmlUtility.AddChild(doc, attrSetNode, ATTRIBUTE); XmlUtility.AddAttributeNode(doc, attrOther, ID, attr.attributeID.ToString()); XmlNode v_e = XmlUtility.AddChild(doc, attrOther, VALUE); XmlUtility.AddChild(doc, v_e, NAME, val.ValueLiteral); } } else if (attr.Type == AttributeTypes.ATTR_IDS) { foreach (Value v_s in attr.Value) { valueElement = XmlUtility.AddChild(doc, attrNode, VALUE); XmlUtility.AddAttributeNode(doc, valueElement, ID, v_s.ValueID); } } else if (attr.Type == AttributeTypes.ATTR_TEXT) { CheckSingleValueListItem(attr); val = (Value)attr.Value[0]; valueElement = XmlUtility.AddChild(doc, attrNode, VALUE); XmlUtility.AddChild(doc, valueElement, NAME, val.ValueLiteral); /* * if( val.ValueId == (int)ValueIds.OTHER ) * { * // Add another attribute node with the same attribute Id * XmlNode attrOther = XmlUtility.AddChild(doc, attrSetNode, ATTRIBUTE); * XmlUtility.AddAttributeNode(doc, attrOther, ID, attr.AttributeId.ToString()); * * valueElement = XmlUtility.AddChild(doc, attrOther, VALUE); * XmlUtility.AddAttributeNode(doc, valueElement, ID, val.ValueId.ToString()); * } */ } else if (attr.Type == AttributeTypes.ATTR_TEXT_DATE) { CheckSingleValueListItem(attr); val = (Value)attr.Value[0]; valueElement = XmlUtility.AddChild(doc, attrNode, VALUE); XmlUtility.AddAttributeNode(doc, valueElement, ID, val.ValueID); AddDateToValueNode(valueElement, val.ValueLiteral); } else { // Unsupported attribute type. foreach (Value v_o in attr.Value) { valueElement = XmlUtility.AddChild(doc, attrNode, VALUE); XmlUtility.AddChild(doc, valueElement, NAME, v_o.ValueLiteral); if (v_o.ValueID != 0) { XmlUtility.AddAttributeNode(doc, valueElement, ID, v_o.ValueID.ToString()); } } } } } return(attrSetNode); }