/** * @ 把元素的值包装成接口 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); }