Beispiel #1
0
        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);
        }