1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26
1

Парсинг XML файла из Яндекс Метрики

23.07.2014, 20:50. Показов 2002. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Пишу, ради практики, небольшую прогу, которая будет отображать данные из щетчиков Яндекс Метрики.
Уже перерил кучу примеров, но не виходит обработать правильно XML - ответ из сервера.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<doc xmlns="http://api.yandex.ru/metrika/">
<date2>20140723</date2>
<min>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</min>
<max>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</max>
<data count="1">
<row>
<wday>2</wday>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<date>20140723</date>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
<id>20140723</id>
</row>
</data>
<rows>1</rows>
<date1>20140723</date1>
<id>24286822</id>
<goals count="0"/>
<totals>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</totals>
</doc>
А именно нужно обработать данные последнего блока <totals>, строки <visits>, <page_views>, <visitors>.
Подскажите пожалуйста, я бы без крайней надобности сюда бы не писал.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2014, 20:50
Ответы с готовыми решениями:

Обработка json или xml ответа из Яндекс метрики
Все токены ID и пароли знаю. Когда вбиваю url с данными получаю ответ от яндекс метрики со...

Как реализовать парсинг позиций в Яндекс не через xml?
не подскажите как можно реализовать парсинг позиций в яндекс не через xml? Добавлено через 4...

Парсинг XML-файла с помощью LINQ to XML
Здрасивуйте. Трабл никак не могу понять в чем дело не могу считать инфу с XML login, getWorkersOUs...

Парсинг XML файла и сохранение информации из файла в структуре или массиве
Доброго времени суток. Пытаюсь распарсить XML файл и вытащить оттуда все данные, а после записать...

5
44 / 44 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
23.07.2014, 22:15 2
так?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  
                  private string _resultSearchObject;// результат ответа геокодера напирмер _resultSearchObject = geoCode.SearchObject("" + txtSerching.Text.Trim());
                  private XmlNode _notToFinde; //для проверки существования дочернего узла в возвращаемом ответе
 
 
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(_resultSearchObject);
 
                XmlElement root = xd.DocumentElement;
  //тащим из узла <Locality>
                XmlNodeList GeoObjectTempLocality = xd.GetElementsByTagName("totals");
 
                //проверка существования xml узла
                _notToFinde = root.SelectSingleNode("visits"); //допустим visits
 
                if (_notToFinde == null)
                {
                    txtXMLAddress.Text = null;
 
                    foreach (XmlNode localityNode in GeoObjectTempLocality)
                    {
                        foreach (XmlNode childLocalityName in localityNode.ChildNodes)
                        {
                            switch (childLocalityName.Name)
                            {
                                case "visits":
                                    txtXMLAddress.Text = childLocalityName.FirstChild.InnerText;
                                    break;
                                case "page_views":
                                    txtXMLCity.Text = child.FirstChild.InnerText;
                                    break;
                                case "visitors":
                                    txtXMLCodeName.Text = child.FirstChild.InnerText;
                                    break;
                            }
                        }
                    }
                }
у меня все выводит в txtBox, я думаю Вы в коде разберётесь, все довольно подробно.
2
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
23.07.2014, 23:14 3
Leon11t,
Выводит все дочерние элементы блока <totals>
C#
1
2
3
4
5
6
7
8
9
public static void xmlWorker(XmlDocument xml)
        {
            XmlNode xmlNode = xml.GetElementsByTagName("totals").Item(0);
            
            foreach (XmlNode node in xmlNode.ChildNodes)
            {
                Console.WriteLine(String.Format("{0} {1}", node.Name, node.InnerText));
            }
        }
0
1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26
24.07.2014, 00:42  [ТС] 4
Большое спасибо за ответы. Два часа тупил в код, но так и не разобрался. Вот кусок моего рабочего кода, но он читает данные только из первого блока, а как его заставить читать последний блок не знаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Properties.Settings ps = Properties.Settings.Default;
             String xmlUrl = "http://api-metrika.yandex.ru/stat/traffic/summary?id=" + ps.CounterID + "&date1=" + ps.Date1 + "&date2=" + ps.Date2 + "&oauth_token=" + ps.YaTocen;
 
             XmlReader xmlReader = XmlReader.Create(xmlUrl);
 
             while (xmlReader.Read())
             {
                 switch (xmlReader.NodeType)
                 {
                     case XmlNodeType.Text:
                         ps.visits = xmlReader.Value;
                         xmlReader.ReadToFollowing("visits");
                         break;
                 }
             }
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
24.07.2014, 00:55 5
Leon11t,
Попробуйте вот так

Добавлено через 19 секунд
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Properties.Settings ps = Properties.Settings.Default;
String xmlUrl = "http://api-metrika.yandex.ru/stat/traffic/summary?id=" + ps.CounterID + "&date1=" + ps.Date1 + "&date2=" + ps.Date2 + "&oauth_token=" + ps.YaTocen;
 
XmlReader xmlReader = XmlReader.Create(xmlUrl);
XmlDocument xml = new XmlDocument();
 
xml.Load(xmlReader);
xmlWorker(xml);
 
............................................
 
public static void xmlWorker(XmlDocument xml)
{
    XmlNode xmlNode = xml.GetElementsByTagName("totals").Item(0);
    
    foreach (XmlNode node in xmlNode.ChildNodes)
    {
 
        // тут что то делаем с node
        // node.name - имя тега
        // node.InnerText - содержимое тега
        string output = String.Format("{0} {1}", node.Name, node.InnerText);
        Console.WriteLine(output);
    }
}
1
1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26
24.07.2014, 11:34  [ТС] 6
Этот код сработал. Но теперь я не знаю как обработать те строки что мне выдало.
Куда теперь копать??


А, все вроде разобрался. Через свич-кейс все вышло.

Большое спасибо всем за помощь!
0
24.07.2014, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2014, 11:34
Помогаю со студенческими работами здесь

насчет яндекс метрики
Вот задумался а стоит ли ставить на сайт? Очень нравится мне функция смс сообщения о недоступном...

Api яндекс метрики
Здравствуйте нужно в метрику загрузить офлайн конверсии...

Счетчик Яндекс метрики
Здравствуйте уважаемые! Скажите мне несведущему человеку, как сделать так, чтобы счетчик Яндекса,...

BKcms код яндекс метрики
Доброго времени суток ! Народ не подскажете как в BKcms вставить код яндекс метрики. Это можно...

Парсинг XML файла
Искал, так и не нашел того что надо... пытался но ничего не вышло. Файл такого типа....

Парсинг файла XML
Помогите разобраться с парсингом файла XML. На входе есть XML-файл: &lt;weatherdata&gt; &lt;location&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru