Пример #1
0
        /**
         * @ 把元素的值包装成接口 IPListNode 类型
         * */
        protected virtual IPListNode ParseNode(XElement reader)
        {
            string        key       = reader.Name.LocalName;
            NodeValueType valueType = key.ToUpper().ToEnum <NodeValueType>();
            IPListNode    node      = new PListDict();
            string        val       = string.Empty;

            switch (valueType)
            {
            case NodeValueType.DICT:
                node.ReaderXml(reader);
                break;

            case NodeValueType.ARRAY:
                node = new PListArray();
                node.ReaderXml(reader);
                break;

            case NodeValueType.DATE:
                node.Value = reader.Value.ToDateTime();
                break;

            case NodeValueType.DATA:
                node.Value = reader.Value.ToBytes();
                break;

            case NodeValueType.FALSE:
            case NodeValueType.TRUE:
                node.Value = valueType == NodeValueType.TRUE;
                break;

            case NodeValueType.REAL:
                node.Value = reader.Value.ToDecimal();
                break;

            case NodeValueType.INTEGER:
                node.Value = reader.Value.ToInt();
                break;

            default:
                node.Value = reader.Value;
                break;
            }
            return(node);
        }