Содержание блога

вторник, 22 июня 2010 г.

PHP MySQL SL шпаргалка

Куски MySQL кода для ускорения писания программ:
Инициализация БД
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    $db=mysql_connect(HostName,UserName,Password);// подключение к mysql
    mysql_select_db(DBName,$db);// подключение к базе данных
    $sqlUTF = @"set names utf8";//Волшебный запросик чтобы вопросиков не было
    $sql="SELECT * FROM wp_session WHERE caveid=$caveid ORDER BY sessionname";
    @mysql_query($sqlUTF,$db);//Волшебный запросик чтобы вопросиков не было
    $ress=mysql_query($sql,$db);//Выполнение запроса
    //echo($sql);
    $nmax=mysql_num_rows($ress);//Количество строк
    if ($nmax>0)
    {
        for ($n=0;$n<$nmax;$n++)
        {
            $sessionid=@mysql_result($ress,$n,"id");
            echo("$sessioni\r\n");
        }
    }
    @mysql_close($db);
}

Текущее ДатаВремя в юникс формате
1
$sql="INSERT INTO wp_session(sessionname, caveid, datecrt, dateupd) values 
(\"$sessionname\",\"$caveid\",UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW()));";  

Перевод даты из юникс в обычную
1
2
$sql="SELECT wp_cave.*, FROM_UNIXTIME(datecrt) as datecrt_fu, 
FROM_UNIXTIME(dateupd) as dateupd_fu FROM wp_cave ORDER BY cavename";          

foreach
foreach (PiketListItem pkt in dataGrid1.ItemsSource as List<PiketListItem>)
{
}

понедельник, 21 июня 2010 г.

XML Parser на PHP

Хорошая статья


Еще одна статья

Блочная отправка методом GET


        private void button3_Click(object sender, RoutedEventArgs e)
        {
            string sql;
            sql = "";
            List listPk = new List();
            PiketListItem npkt;
            foreach (PiketListItem pkt in dataGrid1.ItemsSource as List)
            {
                npkt = new PiketListItem();
                npkt.ID = pkt.ID;
                if (pkt.FROM != null)
                    npkt.FROM = pkt.FROM.Trim();
                if (pkt.TO != null)
                    npkt.TO = pkt.TO.Trim();
                if (pkt.BEARING != null)
                    npkt.BEARING = pkt.BEARING.Trim();
                if (pkt.INC != null)
                    npkt.INC = pkt.INC.Trim();
                if (pkt.LENGTH != null)
                    npkt.LENGTH = pkt.LENGTH.Trim();
                if (pkt.LEFT != null)
                    npkt.LEFT = pkt.LEFT.Trim();
                if (pkt.UP != null)
                    npkt.UP = pkt.UP.Trim();
                if (pkt.DOWN != null)
                    npkt.DOWN = pkt.DOWN.Trim();
                if (pkt.RIGHT != null)
                    npkt.RIGHT = pkt.RIGHT.Trim();
                if (pkt.COMMENTS != null)
                    npkt.COMMENTS = pkt.COMMENTS.Trim();
                npkt.IsPiket = pkt.IsPiket;
                npkt.IsPiketWall = pkt.IsPiketWall;
                listPk.Add(npkt);
            }
            blocks = new List();
            BlockGet bl = new BlockGet();
            string s;
            foreach (PiketListItem pkt in listPk)
            {
                string sIsPiket = "0";
                if (pkt.IsPiket) sIsPiket = "1";
                string sIsPiketWall = "0";
                if (pkt.IsPiketWall) sIsPiketWall = "1";

                s = "insert into wp_pkt_bf(p_FROM,p_TO,p_AZIMUT,p_INC,p_LENGTH,p_LEFT,p_UP,p_DOWN,p_RIGHT,p_COMMENTS,p_IsPiket,p_IsPiketWall,sessionid) values "
                    + "(\"" + pkt.FROM + "\",\"" + pkt.TO + "\",\"" + pkt.BEARING + "\",\"" + pkt.INC + "\",\"" + pkt.LENGTH +"\","
                    + "\"" + pkt.LEFT + "\",\"" + pkt.UP + "\",\"" + pkt.DOWN + "\",\"" + pkt.RIGHT + "\",\"" + pkt.COMMENTS + "\","
                    + "\"" + sIsPiket + "\",\"" + sIsPiketWall + "\",\""+sessionID+"\"" 
                    + ");" + "\r\n";
                if (bl.blockText.Length + s.Length < 1000)
                {
                    bl.blockText += s;
                }
                else
                {
                    sql+=bl.blockText;
                    bl.blockId=DateTime.Now.Hour.ToString()+DateTime.Now.Minute.ToString()
                        +DateTime.Now.Second.ToString()+DateTime.Now.Millisecond.ToString();
                    blocks.Add(bl);
                    bl=new BlockGet();
                    bl.blockText = s;
                }
            }
            //textBoxLog.Text += "SQL:" + "\r\n" + sql + "\r\n";
            // http://aks.m-ten.ru/webpiket/datagetway.php


            #region Отправить методом GET
            //метод не совсем подходящий, но рабочий POST пока не нашел как заставить работать
            //Установил ограничение длины строки get = 1000 символа + ~100(http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt&blockid=114440901&sessionid=0&sql=)
            Uri uri;
            WebClient wc;
            foreach (BlockGet blk in blocks)
            {
                uri = new Uri(getwayURL.Text + "?act=insertpkt&blockid=" + blk.blockId + "&sessionid=" + sessionID + "&sql=" + blk.blockText, UriKind.Absolute);
                textBoxLog.Text += "uri.OriginalString = " + uri.OriginalString + "\r\n";

                wc = new WebClient();
                textBoxLog.Text += "DownloadStringCompleted... blockid=" + blk.blockId + "\r\n";
                wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHndlr);
                textBoxLog.Text += "DownloadStringAsync... \r\n";
                wc.DownloadStringAsync(uri, "POST");
            }

            #endregion Отправить методом GET

        }

суббота, 19 июня 2010 г.

Послать блок текста на сервер методом POST

Первая попытка, почемуто в ответ тишина


#region попытка раз
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);  
            textBoxLog.Text += "Формирование POST запроса...request" + "\r\n";
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded" + "\r\n";
            textBoxLog.Text += "request.RequestUri = " + request.RequestUri.AbsoluteUri + "\r\n";
            sqlpkt = sql;
            textBoxLog.Text += "Формирование POST запроса...BeginGetRequestStream....";
            request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);
            textBoxLog.Text += "ok \r\n";

            #endregion попытка раз
....
        #region RequestReady ResponseReady

        void RequestReady(IAsyncResult asyncResult)
        {
            textBoxLog.Text += "RequestReady\r\n";
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
            Stream stream = request.EndGetRequestStream(asyncResult);

            // Hack for solving multi-threading problem  
            // I think this is a bug  
            this.Dispatcher.BeginInvoke(delegate()
            {
                // Send the post variables  
                textBoxLog.Text += "RequestReady: Send the post variables.... ";
                StreamWriter writer = new StreamWriter(stream);
                writer.WriteLine("sessionid="+sessionID);
                writer.WriteLine("sql="+sqlpkt);
                writer.Flush();
                writer.Close();
                textBoxLog.Text += "ok\r\n";
                textBoxLog.Text += "RequestReady: request.BeginGetResponse\r\n";
                request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
                textBoxLog.Text += "RequestReady: request.BeginGetResponse....ok\r\n";
            });
        }  

        // Get the Result  
        void ResponseReady(IAsyncResult asyncResult)
        {
            textBoxLog.Text += "ResponseReady\r\n";
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);

            this.Dispatcher.BeginInvoke(delegate()
            {
                textBoxLog.Text += "ResponseReady: this.Dispatcher.BeginInvoke(delegate() \r\n";
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream);
                // get the result text  
                string result = reader.ReadToEnd();
                textBoxLog.Text += "reader result: " + result + "\r\n";
            });
        }
        #endregion RequestReady ResponseReady
 

Динамическое создание элемента form

Создание элемента форм с скрытыми полями, ошибок не дал, но и неисполнил ни чего, треуется дальнейшее изучение этого блока:
textBoxLog.Text += "create HtmlElement sqlform... ";
            System.Windows.Browser.HtmlElement sqlform = System.Windows.Browser.HtmlPage.Document.CreateElement("form");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform name = sqlform ... ";
            sqlform.SetProperty("name", "sqlform");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform method = post ... ";
            sqlform.SetProperty("method", "post");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform action = http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt... ";
            sqlform.SetProperty("action", "http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement sqlInput(sql)... ";
            System.Windows.Browser.HtmlElement sqlInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            sqlInput.SetProperty("type", "hidden");
            sqlInput.SetProperty("name", "sql");
            sqlInput.SetProperty("value", sql);
            sqlform.AppendChild(sqlInput);
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement sessionInput(sessionid)... ";
            System.Windows.Browser.HtmlElement sessionInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            sessionInput.SetProperty("type", "hidden");
            sessionInput.SetProperty("name", "sessionid");
            sessionInput.SetProperty("value", sessionID);
            sqlform.AppendChild(sessionInput);
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement actInput(act)... ";
            System.Windows.Browser.HtmlElement actInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            actInput.SetProperty("type", "hidden");
            actInput.SetProperty("name", "act");
            actInput.SetProperty("value", "insertpkt");
            sqlform.AppendChild(actInput);
            sqlform.Invoke("submit");
            textBoxLog.Text += "ok \r\n";

пятница, 18 июня 2010 г.

Чтение из DataGrid

DataGrid заполнялся списком List<PiketListItem>


            string sql;
            sql = "";
            List<PiketListItem> listPk = new List<PiketListItem>();
            PiketListItem npkt;
            foreach (PiketListItem pkt in dataGrid1.ItemsSource as List<PiketListItem>)
            {
                npkt = new PiketListItem();
                npkt.ID = pkt.ID;
                npkt.FROM = pkt.FROM;
                npkt.TO = pkt.TO;
                npkt.BEARING = pkt.BEARING;
                npkt.INC = pkt.INC;
                npkt.LENGTH = pkt.LENGTH;
                npkt.LEFT = pkt.LEFT;
                npkt.UP = pkt.UP;
                npkt.DOWN = pkt.DOWN;
                npkt.RIGHT = pkt.RIGHT;
                npkt.COMMENTS = pkt.COMMENTS;
                npkt.IsPiket = pkt.IsPiket;
                npkt.IsPiketWall = pkt.IsPiketWall;
                listPk.Add(npkt);
            }
            foreach (PiketListItem pkt in listPk)
            {
                string sIsPiket = "0";
                if (pkt.IsPiket) sIsPiket = "1";
                string sIsPiketWall = "0";
                if (pkt.IsPiketWall) sIsPiketWall = "1";
                sql += "insert into wp_pkt(FROM,TO,BEARING,INC,LENGTH,LEFT,UP,DOWN,RIGHT,COMMENTS,sIsPiket,sIsPiketWall) values "
                    + "(\"" + pkt.FROM + "\",\"" + pkt.TO + "\",\"" + pkt.BEARING + "\",\"" + pkt.INC + "\",\"" + pkt.LENGTH +"\","
                    + "\"" + pkt.LEFT + "\",\"" + pkt.UP + "\",\"" + pkt.DOWN + "\",\"" + pkt.RIGHT + "\",\"" + pkt.COMMENTS + "\","
                    + "\"" + sIsPiket + "\",\"" + sIsPiketWall + "\",\"" 
                    + ");" + "\r\n";
            }
            textBoxLog.Text += "SQL:" + "\r\n" + sql + "\r\n";

Интерфейс INotifyPropertyChanged

Изменение значения в ячейках DataGrid
INotifyPropertyChanged Interface

//Add using statements
using System.ComponentModel;
using System.Windows.Data;


...


// Create a class that implements INotifyPropertyChanged
public class Person : INotifyPropertyChanged
{
    private string firstNameValue;
    public string FirstName{
        get { return firstNameValue; }
        set
        {
            firstNameValue=value;
            // Call NotifyPropertyChanged when the property is updated
            NotifyPropertyChanged("FirstName");
        }
    }

    // Declare the PropertyChanged event
    public event PropertyChangedEventHandler PropertyChanged;

    // NotifyPropertyChanged will raise the PropertyChanged event passing the
    // source property that is being updated.
    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }  
} 
 
Если в DataGrid изменить значение в какой либо ячейке с помощью какого либо действия не связанного именно с тыканьем мышкой в ячейку и ввода нового значения, то значение не обновляется до тех пор пока, например, не прокрутишь DataGrid вниз и обратно.
читать всю ветку Изменение значения в ячейках DataGrid
взято с silverlighter.ru

четверг, 17 июня 2010 г.

Полезные ссылки по Silverligth C#


Сайтописательство

Конвертация кода в HTML

Классная конверталка кода в HTML

Чтение XML Кода

Имеется код в формате XML нужно его перегнать в список
Пример XML
<datagetway act="getcavelist">
 <info> datagetway ver 1.0 act=getcavelist</info>
 <caves> 
  <cave cavename="п.Камызякская" datecrt="0" dateupd="0" id="2"> 
   <cavedesc>Очень красивая пещера.</cavedesc> 
   <sessions> 
    <session datecrt="0" dateupd="0" id="2" isused="0" sessionname="KAMIZAK"> 
     <sessiondesc>Длина: 272
      Глубина: 74</sessiondesc> 
    </session> 
   </sessions> 
  </cave> 
  <cave cavename="п.Пять Озер" datecrt="0" dateupd="0" id="1"> 
   <cavedesc>Пещера еще до конца не изучена.</cavedesc> 
   <sessions> 
    <session datecrt="0" dateupd="0" id="1" isused="0" sessionname="FLIKE1"> 
      <sessiondesc>Длина:     811
      Глубина: 57</sessiondesc> 
    </session> 
   </sessions> 
  </cave> 
</caves> 
</datagetway>

Код обработчика:
string sResult = e.Result.Trim(); // текст в формате XML
            StringReader stream = new StringReader(sResult);
            XmlReader reader = XmlReader.Create((TextReader)stream);
            string act = "";
            string info = "", node = "", nodecv = "", nodecv2 = "", nodecv3 = "";
            #region Пример XML
            //<?xml version="1.0" encoding="utf-8" ?> 
            //<datagetway act="getcavelist" >
            //<info> datagetway ver 1.0 act=getcavelist</info>
            //<caves> 
            //    <cave id="2" cavename="п.Камызякская" datecrt="0" dateupd="0"> 
            //        <cavedesc>Очень красивая пещера.</cavedesc> 
            //        <sessions> 
            //            <session id="2" sessionname="KAMIZAK" datecrt="0" dateupd="0" isused="0"> 
            //                <sessiondesc></sessiondesc> 
            //            </session> 
            //        </sessions> 
            //    </cave> 
            //    <cave id="1" cavename="п.Пять Озер" datecrt="0" dateupd="0"> 
            //        <cavedesc>Пещера еще до конца не изучена.</cavedesc> 
            //        <sessions> 
            //            <session id="1" sessionname="FLIKE1" datecrt="0" dateupd="0" isused="0"> 
            //               <sessiondesc></sessiondesc> 
            //            </session> 
            //        </sessions> 
            //    </cave> 
            //</caves> 
            //</datagetway>
            #endregion Пример XML
            cavelist = new List<Caves>();
            Caves cv = new Caves();
            SessionCave ssc = new SessionCave();
            int cvint = -1, sscint = -1;
            List<PiketListItem> listPk = new List<PiketListItem>(); // Журнал пикетажки
            PiketListItem itemPk = new PiketListItem(); //строка-пикет
            #region Чтение XML
            while (reader.Read())//Чтение XML
            {

                //textBoxLog.Text += "XML Read " + reader.Name + "; cvint=" + cvint.ToString() + "\r\n";
                #region NodeType == Element
                if (reader.NodeType == XmlNodeType.Element) //Если элемент 
                {
                    #region datagetway
                    if (reader.Name == "datagetway")
                    {
                        act = reader.GetAttribute("act");
                        textBoxLog.Text += "XML datagetway act = " + act + "\r\n";
                    }
                    #endregion datagetway
                    #region info
                    else if (reader.Name == "info")
                    {
                        node = reader.Name;
                    }
                    #endregion info
                    #region caves
                    else if (reader.Name == "caves")
                    {
                        node = "caves";
                        textBoxLog.Text += "XML node = " + node + "\r\n";
                    }
                    #region cave
                    else if (reader.Name == "cave" && node == "caves")
                    {
                        nodecv = reader.Name;
                        cv = new Caves();
                        cv.id = Convert.ToInt32(reader.GetAttribute("id"));
                        cv.cavename = reader.GetAttribute("cavename");
                        cv.datecrt = reader.GetAttribute("datecrt");
                        cv.dateupd = reader.GetAttribute("dateupd");
                        cavelist.Add(cv);
                        cvint = cavelist.Count - 1;
                        textBoxLog.Text += "XML nodecv = " + nodecv + "\r\n";
                    }
                    #region cavedesc
                    else if (reader.Name == "cavedesc" && node == "caves" && nodecv == "cave")
                    {
                        nodecv2 = reader.Name;
                    }
                    #endregion cavedesc
                    #region sessions
                    else if (reader.Name == "sessions" && node == "caves" && nodecv == "cave")
                    {
                        nodecv2 = reader.Name;
                        cavelist[cvint].sessions = new List<SessionCave>();
                    }
                    #region session
                    else if (reader.Name == "session" && node == "caves" && nodecv == "cave" && nodecv2 == "sessions")
                    {
                        ssc = new SessionCave();
                        ssc.id = Convert.ToInt32(reader.GetAttribute("id"));
                        ssc.name = reader.GetAttribute("sessionname");
                        ssc.datecrt = reader.GetAttribute("datecrt");
                        ssc.dateupd = reader.GetAttribute("dateupd");
                        ssc.isused = reader.GetAttribute("isused");
                        cavelist[cvint].sessions.Add(ssc);
                        textBoxLog.Text += "XML session = " + ssc.name + "\r\n";
                        sscint = cavelist[cvint].sessions.Count - 1;
                    }
                    #region sessiondesc
                    else if (reader.Name == "sessiondesc" && node == "caves" && nodecv == "cave" && nodecv2 == "sessions")
                    {
                        nodecv3 = reader.Name;
                    }
                    #endregion sessiondesc

                    #endregion session
                    #endregion sessions

                    #endregion cave
                    #endregion caves
                    #region addpiket
                    if (reader.Name == "addpiket")
                    {
                        string sblockid = reader.GetAttribute("blockid");
                        string sact = reader.GetAttribute("act");
                        int noBl = -1;
                        int i = -1;
                        foreach (BlockGet bl in blocks)
                        {
                            i++;
                            if (bl.blockId == sblockid) noBl = i;
                        }
                        if (noBl > -1)
                            blocks.RemoveAt(noBl);
                        textBoxLog.Text += "осталось блоков:" + blocks.Count;
                        if (blocks.Count == 0)
                        {
                            Uri uri;
                            WebClient wc;
                            uri = new Uri(getwayURL.Text + "?act=commitpkt&sessionid=" + sessionID, UriKind.Absolute);

                            wc = new WebClient();
                            textBoxLog.Text += "DownloadStringCompleted... commit" + "\r\n";
                            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHndlr);
                            textBoxLog.Text += "DownloadStringAsync... \r\n";
                            wc.DownloadStringAsync(uri, "POST");
                        }
                    }
                    #endregion addpiket
                    #region addpiketxml
                    if (reader.Name == "addpiketxml")
                    {
                        string sblockid = reader.GetAttribute("blockid");
                        string sact = reader.GetAttribute("act");
                        int noBl = -1;
                        int i = -1;
                        foreach (BlockGet bl in blockXML)
                        {
                            i++;
                            if (bl.blockId == sblockid) noBl = i;
                        }
                        if (noBl > -1)
                            blockXML.RemoveAt(noBl);
                        textBoxLog.Text += "осталось блоков:" + blockXML.Count;
                        if (blockXML.Count == 0)
                        {
                            Uri uri;
                            WebClient wc;
                            uri = new Uri(getwayURL.Text + "?act=commitpkt&sessionid=" + sessionID, UriKind.Absolute);

                            wc = new WebClient();
                            textBoxLog.Text += "DownloadStringCompleted... commit" + "\r\n";
                            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHndlr);
                            textBoxLog.Text += "DownloadStringAsync... \r\n";
                            wc.DownloadStringAsync(uri, "POST");
                        }
                    }
                    #endregion addpiketxml
                    #region addstationxml
                    if (reader.Name == "addstationxml")
                    {
                        string sblockid = reader.GetAttribute("blockid");
                        string sact = reader.GetAttribute("act");
                        int noBl = -1;
                        int i = -1;
                        foreach (BlockGet bl in blockStsXML)
                        {
                            i++;
                            if (bl.blockId == sblockid) noBl = i;
                        }
                        if (noBl > -1)
                            blockStsXML.RemoveAt(noBl);
                        textBoxLog.Text += "осталось блоков:" + blockStsXML.Count;
                        if (blockStsXML.Count == 0)
                        {
                            Uri uri;
                            WebClient wc;
                            uri = new Uri(getwayURL.Text + "?act=commitsts&sessionid=" + sessionID, UriKind.Absolute);

                            wc = new WebClient();
                            textBoxLog.Text += "DownloadStringCompleted... commit" + "\r\n";
                            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHndlr);
                            textBoxLog.Text += "DownloadStringAsync... \r\n";
                            wc.DownloadStringAsync(uri, "POST");
                        }
                    }
                    #endregion addstationxml
                    #region commitpiket
                    if (reader.Name == "commitpiket")
                    {
                        textBoxLog.Text += "COMMIT PICKET";
                        textBlockStat.Text = "Данные переданы";
                        textBlockStat.Text = "Передача станций ... дождитесь завершения";
                        SendXMLSTS();
                    }
                    #endregion commitpiket
                    #region commitstation
                    if (reader.Name == "commitstation")
                    {
                        textBoxLog.Text += "COMMIT STATIONS";
                        textBlockStat.Text = "Данные о станциях переданы";
                    }
                    #endregion commitstation
                    #region delallwppktbf
                    if (reader.Name == "delallwppktbf")
                    {
                        textBoxLog.Text += "Готов к приему";
                        SendXML();
                    }
                    #endregion delallwppktbf
                    #region commitcave
                    if (reader.Name == "commitcave")
                    {
                        textBoxLog.Text += "COMMIT cave";
                        textBlockStat.Text = "Создана пещера";
                        refreshCave();
                    }
                    #endregion commitcave
                    #region commitsession
                    if (reader.Name == "commitsession")
                    {
                        textBoxLog.Text += "commit session";
                        textBlockStat.Text = "Создана сессия";
                        refreshCave();
                    }
                    #endregion commitsession
                    #region pktlist
                    else if (reader.Name == "pktlist")
                    {
                        node = "pktlist";
                        textBoxLog.Text += "XML node = " + node + "\r\n";
                        listPk = new List<PiketListItem>();
                    }
                    #region pkt
                    else if (reader.Name == "pkt" && node == "pktlist")
                    {
                        nodecv = "pkt";
                        //<pkt id="17" sessionID="2" p_FROM="10" p_TO="11" p_AZIMUT="156,00" p_INC="32,00" p_LENGTH="8,20"  
                        //p_LEFT="2,30" p_UP="2,95" p_DOWN="0,00" p_RIGHT="1,97"  p_sIsPiket="1" p_sIsPiketWall="1">Ступенька 0.9</pkt>
                        itemPk = new PiketListItem();
                        itemPk.ID = Convert.ToInt32(reader.GetAttribute("id"));
                        itemPk.FROM = reader.GetAttribute("p_FROM");
                        itemPk.TO = reader.GetAttribute("p_TO");
                        itemPk.BEARING = reader.GetAttribute("p_AZIMUT");
                        itemPk.INC = reader.GetAttribute("p_INC");
                        itemPk.LENGTH = reader.GetAttribute("p_LENGTH");
                        itemPk.LEFT = reader.GetAttribute("p_LEFT");
                        itemPk.UP = reader.GetAttribute("p_UP");
                        itemPk.DOWN = reader.GetAttribute("p_DOWN");
                        itemPk.RIGHT = reader.GetAttribute("p_RIGHT");
                        itemPk.IsPiket = false;
                        if (reader.GetAttribute("p_sIsPiket") == "1")
                            itemPk.IsPiket = true;
                        itemPk.IsPiketWall = false;
                        if (reader.GetAttribute("p_sIsPiketWall") == "1")
                            itemPk.IsPiketWall = true;
                        listPk.Add(itemPk);
                    }
                    #endregion pkt
                    #endregion pktlist
                }
                #endregion NodeType == Element
                #region NodeType == EndElement
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    if (reader.Name == "cave")
                    {
                        nodecv = "";
                    }
                    if (reader.Name == "caves")
                    {
                        node = "";
                    }
                    if (reader.Name == "cavedesc")
                    {
                        nodecv2 = "";
                    }
                    if (reader.Name == "info")
                    {
                        node = "";
                    }
                    if (reader.Name == "sessiondesc")
                    {
                        nodecv3 = "";
                    }
                    if (reader.Name == "pktlist")
                    {
                        node = "";
                    }
                    if (reader.Name == "pkt")
                    {
                        nodecv = "";
                    }
                }
                #endregion NodeType == EndElement
                #region NodeType == Text
                else if (reader.NodeType == XmlNodeType.Text)
                {
                    if (node == "info")
                    {
                        info = reader.Value;
                        textBoxLog.Text += "XML info = " + info + "\r\n";
                    }
                    if (nodecv2 == "cavedesc" && node == "caves" && nodecv == "cave")
                    {
                        cavelist[cvint].cavedesc = reader.Value;
                        textBoxLog.Text += "XML cavedesc = " + cavelist[cvint].cavedesc + "\r\n";
                    }
                    if (nodecv3 == "sessiondesc" && node == "caves")
                    {
                        cavelist[cvint].sessions[sscint].desc = reader.Value;
                        textBoxLog.Text += "XML sessiondesc = " + cavelist[cvint].sessions[sscint].desc + "\r\n";
                    }
                    if (nodecv == "pkt" && node == "pktlist")
                    {
                        listPk[listPk.Count - 1].COMMENTS = reader.Value;
                        textBoxLog.Text += "XML pktComment = " + listPk[listPk.Count - 1].COMMENTS;
                    }
                }
                #endregion NodeType == Text
            }//while (reader.Read())//Чтение XML
            #endregion Чтение XML
            textBoxLog.Text += "cavelist.Count = " + cavelist.Count.ToString() + "\r\n";