/// <summary> /// 由XmlElement转换成SqlElement /// </summary> /// <param name="sqlElement">附加到的SqlElement</param> /// <param name="xmlParent">反序列化的XmlElement</param> /// <param name="xnm">命名空间</param> public override void FromXml(SqlElement sqlElement, XmlElement xmlParent, XmlNamespaceManager xnm) { base.FromXml(sqlElement, xmlParent, xnm); SubQuerySqlStatement selectSql = sqlElement as SubQuerySqlStatement; ParserUtil util = new ParserUtil(xnm); XmlElement xmlSelectList = util.Child(xmlParent, SelectFieldListStatement.SELECTLISTSTATEMENT); XmlElement xmlFrom = util.Child(xmlParent, From.FROM); XmlElement xmlJoinCondition = util.Child(xmlParent, JoinConditionStatement.JOINCONDITIONSTATEMENT); XmlElement xmlFilterCondition = util.Child(xmlParent, FILTERCONDITION); XmlElement xmlOrderByCondition = util.Child(xmlParent, ORDERBYCONDITION); selectSql.SelectList.FromXml(selectSql.SelectList, xmlSelectList, xnm); selectSql.From.FromXml(selectSql.From, xmlFrom, xnm); selectSql.JoinCondition.FromXml(selectSql.JoinCondition, xmlJoinCondition, xnm); selectSql.FilterCondition.FromXml(selectSql.FilterCondition, xmlFilterCondition, xnm); selectSql.OrderByCondition.FromXml(selectSql.OrderByCondition, xmlOrderByCondition, xnm); /* * MainFromItem只序列化,不反序列化。 * 其反序列化操作已包含在Froms的集合中,直接从集合中取即可。 * */ selectSql.mainFromItem = this.From.ChildCollection[0] as FromItem; }
/// <summary> /// 转换成XmlElement /// </summary> /// <param name="sqlElement">要转换的对象</param> /// <param name="xmlParent">附加到的XmlElement</param> public override void ToXml(SqlElement sqlElement, XmlElement xmlParent) { base.ToXml(sqlElement, xmlParent); SubQuerySqlStatement selectSql = sqlElement as SubQuerySqlStatement; XmlElement xmlSelectList = SerializerUtil.AddElement(xmlParent, SelectFieldListStatement.SELECTLISTSTATEMENT); selectSql.SelectList.ToXml(selectSql.SelectList, xmlSelectList); XmlElement xmlFrom = SerializerUtil.AddElement(xmlParent, From.FROM); selectSql.From.ToXml(selectSql.From, xmlFrom); XmlElement xmlJoinCondition = SerializerUtil.AddElement(xmlParent, JoinConditionStatement.JOINCONDITIONSTATEMENT); selectSql.JoinCondition.ToXml(selectSql.JoinCondition, xmlJoinCondition); XmlElement xmlFilterCondition = SerializerUtil.AddElement(xmlParent, FILTERCONDITION); selectSql.FilterCondition.ToXml(selectSql.FilterCondition, xmlFilterCondition); XmlElement xmlOrderByCondition = SerializerUtil.AddElement(xmlParent, ORDERBYCONDITION); selectSql.OrderByCondition.ToXml(selectSql.OrderByCondition, xmlOrderByCondition); /* * MainFromItem只序列化,不反序列化。 * 其反序列化操作已包含在Froms的集合中,直接从集合中取即可。 * */ XmlElement xmlMainFromItem = SerializerUtil.AddElement(xmlParent, MAINFROMITEM); selectSql.MainFromItem.ToXml(selectSql.MainFromItem, xmlMainFromItem); }