/// <summary>
        /// 通过座位的XML创建座位布局
        /// </summary>
        /// <param name="seatLayoutXml"></param>
        /// <returns></returns>
        public static SeatLayout GetSeatLayout(string seatLayoutXml)
        {
            SeatLayout layout = getSeats(seatLayoutXml);

            layout.Notes = getNodes(seatLayoutXml);
            return(layout);
        }
        /// <summary>
        /// 通过座位布局创建Xml
        /// </summary>
        /// <returns></returns>
        public static string CreadSeatXml(SeatLayout seatLayout)
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                //创建开头
                XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                doc.AppendChild(dec);
                XmlElement Rootelement = doc.CreateElement("seatroot");//最后添加到Doc

                XmlElement SecNode1 = doc.CreateElement("seatinfo");
                //行
                XmlElement ThirdNode1 = doc.CreateElement("rowscount");
                ThirdNode1.InnerText = seatLayout.SeatRow.ToString();
                //列
                XmlElement ThirdNode2 = doc.CreateElement("columscount");
                ThirdNode2.InnerText = seatLayout.SeatCol.ToString();

                //方位
                XmlElement ThirdNode3 = doc.CreateElement("position");
                ThirdNode3.InnerText = seatLayout.Position.ToString();

                XmlElement ThirdNode4 = doc.CreateElement("IsUpdate");
                ThirdNode4.InnerText = seatLayout.IsUpdate.ToString();

                SecNode1.AppendChild(ThirdNode1);
                SecNode1.AppendChild(ThirdNode2);
                SecNode1.AppendChild(ThirdNode3);
                SecNode1.AppendChild(ThirdNode4);

                Rootelement.AppendChild(SecNode1);
                //创建座位节点
                XmlElement SecNode2 = doc.CreateElement("seatdetail");
                foreach (string seatNo in seatLayout.Seats.Keys)
                {
                    XmlElement seatNode = doc.CreateElement("objseat");
                    //   seatNode.SetAttribute("seatno", seatLayout.RoomNo + seatLayout.Seats[seatNo].ShortSeatNo);
                    seatNode.SetAttribute("seatno", seatLayout.Seats[seatNo].SeatNo);
                    seatNode.SetAttribute("haspower", ConfigConvert.ConvertToString(seatLayout.Seats[seatNo].HavePower));
                    seatNode.SetAttribute("isstop", ConfigConvert.ConvertToString(seatLayout.Seats[seatNo].IsSuspended));
                    seatNode.SetAttribute("rownum", seatLayout.Seats[seatNo].PositionY.ToString());
                    seatNode.SetAttribute("colnum", seatLayout.Seats[seatNo].PositionX.ToString());
                    seatNode.SetAttribute("booktype", Convert.ToInt32(seatLayout.Seats[seatNo].CanBeBespeak).ToString());
                    seatNode.SetAttribute("centerx", seatLayout.Seats[seatNo].RotationCenterX.ToString());
                    seatNode.SetAttribute("centery", seatLayout.Seats[seatNo].RotationCenterY.ToString());
                    seatNode.SetAttribute("angle", seatLayout.Seats[seatNo].RotationAngle.ToString());
                    SecNode2.AppendChild(seatNode);
                }
                Rootelement.AppendChild(SecNode2);
                //创建备注节点。。
                XmlElement seatNotes = doc.CreateElement("seatnotes");
                for (int i = 0; i < seatLayout.Notes.Count; i++)
                {
                    XmlElement node = doc.CreateElement("seatnote");
                    node.SetAttribute("strnote", seatLayout.Notes[i].Remark);
                    node.SetAttribute("rownum", seatLayout.Notes[i].PositionY.ToString());
                    node.SetAttribute("colnum", seatLayout.Notes[i].PositionX.ToString());
                    node.SetAttribute("centerx", seatLayout.Notes[i].RotationCenterX.ToString());
                    node.SetAttribute("centery", seatLayout.Notes[i].RotationCenterY.ToString());
                    node.SetAttribute("angle", seatLayout.Notes[i].RotationAngle.ToString());
                    node.SetAttribute("type", ((int)seatLayout.Notes[i].Type).ToString());
                    node.SetAttribute("baseHeight", seatLayout.Notes[i].BaseHeight.ToString());
                    node.SetAttribute("baseWidth", seatLayout.Notes[i].BaseWidth.ToString());
                    seatNotes.AppendChild(node);
                    // throw new Exception("老的构造方法");
                }
                Rootelement.AppendChild(seatNotes);
                doc.AppendChild(Rootelement);
                return(doc.OuterXml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 解析座位配置
        /// </summary>
        /// <param name="seatXml"></param>
        /// <returns></returns>
        private static SeatLayout getSeats(string seatXml)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(seatXml);
            SeatLayout seats = new SeatLayout();
            //查找行数和列数
            XmlNode node = doc.SelectSingleNode("//seatroot/seatinfo/rowscount");

            seats.SeatRow = int.Parse(node.InnerText);
            node          = doc.SelectSingleNode("//seatroot/seatinfo/columscount");
            seats.SeatCol = int.Parse(node.InnerText);
            //查找方位
            node = doc.SelectSingleNode("//seatroot/seatinfo/position");
            if (node != null)
            {
                seats.Position = node.InnerText;
            }
            node = doc.SelectSingleNode("//seatroot/seatinfo/IsUpdate");
            if (node != null)
            {
                seats.IsUpdate = bool.Parse(node.InnerText);
            }
            //查找座位
            XmlNodeList nodes = doc.SelectNodes("//seatroot/seatdetail/objseat");
            Dictionary <string, Seat> seatList = new Dictionary <string, Seat>();

            foreach (XmlNode element in nodes)
            {
                try
                {
                    Seat seat = new Seat();
                    seat.ShortSeatNo  = element.Attributes["seatno"].Value.Substring(6, 3);
                    seat.SeatNo       = element.Attributes["seatno"].Value;
                    seat.PositionY    = double.Parse(element.Attributes["rownum"].Value);
                    seat.PositionX    = double.Parse(element.Attributes["colnum"].Value);
                    seat.HavePower    = ConfigConvert.ConvertToBool(element.Attributes["haspower"].Value);
                    seat.CanBeBespeak = getCanBeBook(element.Attributes["booktype"].Value);
                    if (element.Attributes["centerx"] != null)
                    {
                        seat.RotationCenterX = int.Parse(element.Attributes["centerx"].Value);
                    }
                    if (element.Attributes["centery"] != null)
                    {
                        seat.RotationCenterY = int.Parse(element.Attributes["centery"].Value);
                    }
                    if (element.Attributes["angle"] != null)
                    {
                        seat.RotationAngle = int.Parse(element.Attributes["angle"].Value);
                    }
                    if (element.Attributes["isstop"] != null)
                    {
                        seat.IsSuspended = ConfigConvert.ConvertToBool(element.Attributes["isstop"].Value);
                    }
                    seatList.Add(seat.SeatNo, seat);
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Format("解析失败座位失败:{0};座位编号:{1}", ex.Message, element.Attributes["seatno"].Value));
                }
            }

            Seat temp = new Seat();//交换变量

            //排序
            seatList = (from entry in seatList
                        orderby entry.Value.SeatNo ascending
                        select entry).ToDictionary(pair => pair.Key, pair => pair.Value);

            seats.Seats = seatList;
            return(seats);
        }