Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
1

Парсим данные

12.06.2013, 14:17. Просмотров 1095. Ответов 16
Метки нет (Все метки)

Всем привет, возможно ли из такого вида данных, вывести только значение [name] ?

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
Array
(
    [0] => Array
        (
            [id] => 2
            [name] => Unnamed
            [imageId] => 9
            [status] => is_running
            [type] => VirtualServer
            [virtual_os_soft_id] => 
            [virtual_mashines_soft_version] => 
            [vps_order] => 0
            [os_bits] => 64
            [os_type] => ubuntu
            [addresses] => Array
                (
                    [public] => Array
                        (
                            [0] => Array
                                (
                                    [ip] => 127.0.0.1
                                    [primary_ip] => 1
                                    [isp] => lite
                                )
 
                        )
 
                )
 
            [full_id] => 181462-2
        )
 
)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 14:17
Ответы с готовыми решениями:

Парсим и делаем общее количество
Добрый день не получается сложить все данные которое получил =( string text3 =...

Парсим значения и добавляем в DataSet
Есть некий метод, который принимает на вход DataSet, после чего он пытается всунуть данные в этот...

Регулярные выражения-парсим фразы с тире
В прошлой теме не обратили внимания, но вопрос опять по регулярным выражениям: 1.Ещё подскажите...

Парсим сайт. Обработка приложенной строки и ей подобных
Допустим есть вот такой код <td>  Азербайджанский манат</td> <td...

Парсим нужное слово с сайта
Помогите пожалуйста завтра закрываю сессию, мне срочно нужна помощь. Суть программы такова: В...

16
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 14:53  [ТС] 2
Совсем не кто не знает?
0
Монфрид
1215 / 1025 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
19.06.2013, 15:02 3
что это такое? это у вас строка такая? если да, то обычными SubString, IndexOf можно извлечь всё что угодно
1
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 15:10 4
это C#? Больше похоже на php
0
19.06.2013, 15:10
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 15:11  [ТС] 5
Цитата Сообщение от Winhttp22 Посмотреть сообщение
это C#? Больше похоже на php
я получаю эти данные с API сервера, пытался вывести в xml формате, а выводит только в таком формате.
0
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 15:13 6
KyKyIIIKuH, это текстовые данные такие получаешь чтоли?
0
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 15:14  [ТС] 7
Цитата Сообщение от Winhttp22 Посмотреть сообщение
KyKyIIIKuH, это текстовые данные такие получаешь чтоли?
так точно
0
buntar
532 / 533 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
19.06.2013, 15:21 8
Это из файла? как он называется и где находиться знаете? - можно сплитом вытащить имя.
0
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 15:22 9
KyKyIIIKuH, как в армии отвечаешь
тогда можно с помощью обычной регулярки спарсить, а будет она примерно такая -
C#
1
@"\[name\] => (.*?)"
0
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 15:23  [ТС] 10
Цитата Сообщение от buntar Посмотреть сообщение
Это из файла? как он называется и где находиться знаете? - можно сплитом вытащить имя.
получаю эти данные таким образом.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public string Get_Server(int server_id)
        {
            // Формируем строку с параметрами
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiurl + "/servers/" + server_id);
            // Настраиваем параметры запроса
            request.Method = "GET";
            request.Headers.Add("X-Auth-Token: " + sToken);
 
            // Указываем метод отправки данных скрипту
            //request.AllowAutoRedirect = true;
 
            // Указываем тип отправляемых данных
            request.Accept = "Accept: application/xml";
            //request.ContentType = "Content-type: application/xml; charset=UTF-8";
 
            // Получаем ответ
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 
            // Получаем информацию по виртуальному серверу
            StreamReader info = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
            return info.ReadToEnd().Trim();
        }
0
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 15:30 11
Цитата Сообщение от buntar Посмотреть сообщение
Это из файла? как он называется и где находиться знаете? - можно сплитом вытащить имя.
интересно на это посмотреть

Добавлено через 5 минут
как то так попробуй -
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public string Get_Server(int server_id)
        {
            // Формируем строку с параметрами
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiurl + "/servers/" + server_id);
            // Настраиваем параметры запроса
            request.Method = "GET";
            request.Headers.Add("X-Auth-Token: " + sToken);
 
            // Указываем метод отправки данных скрипту
            //request.AllowAutoRedirect = true;
 
            // Указываем тип отправляемых данных
            request.Accept = "Accept: application/xml";
            //request.ContentType = "Content-type: application/xml; charset=UTF-8";
 
            // Получаем ответ
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 
            // Получаем информацию по виртуальному серверу
            StreamReader info = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
            return Regex.Match(info.ReadToEnd().Trim(),@"\[name\] => (.*?)").Grours[1].Value;
        }
0
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 15:35  [ТС] 12
Цитата Сообщение от Winhttp22 Посмотреть сообщение
KyKyIIIKuH, как в армии отвечаешь
тогда можно с помощью обычной регулярки спарсить, а будет она примерно такая -
C#
1
@"\[name\] => (.*?)"
пока буду пользоваться Substring.

Добавлено через 2 минуты
Цитата Сообщение от Winhttp22 Посмотреть сообщение
интересно на это посмотреть

Добавлено через 5 минут
как то так попробуй -
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public string Get_Server(int server_id)
        {
            // Формируем строку с параметрами
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiurl + "/servers/" + server_id);
            // Настраиваем параметры запроса
            request.Method = "GET";
            request.Headers.Add("X-Auth-Token: " + sToken);
 
            // Указываем метод отправки данных скрипту
            //request.AllowAutoRedirect = true;
 
            // Указываем тип отправляемых данных
            request.Accept = "Accept: application/xml";
            //request.ContentType = "Content-type: application/xml; charset=UTF-8";
 
            // Получаем ответ
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 
            // Получаем информацию по виртуальному серверу
            StreamReader info = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
            return Regex.Match(info.ReadToEnd().Trim(),@"\[name\] => (.*?)").Grours[1].Value;
        }
всю инфу сразу выводит все равно )
0
Монфрид
1215 / 1025 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
19.06.2013, 15:40 13
так можно:
C#
1
2
3
4
5
6
7
8
int nameIndex = res.LastIndexOf("[name]")+"[name]".Length;
            string stringBlock;
            if (nameIndex!=-1){
                int nameBlockEndIndex=res.IndexOf("[",nameIndex);
                stringBlock= res.Substring(nameIndex, nameBlockEndIndex - nameIndex);
                if (stringBlock.Length > 0)
                    stringBlock=stringBlock.Replace("=>", "").Replace("\r\n", "");
            }
, где res - это ваша строка, содержащая ответ от сервера
1
KyKyIIIKuH
31 / 0 / 1
Регистрация: 11.06.2013
Сообщений: 19
19.06.2013, 15:43  [ТС] 14
Цитата Сообщение от Монфрид Посмотреть сообщение
так можно:
C#
1
2
3
4
5
6
7
8
int nameIndex = res.LastIndexOf("[name]")+"[name]".Length;
            string stringBlock;
            if (nameIndex!=-1){
                int nameBlockEndIndex=res.IndexOf("[",nameIndex);
                stringBlock= res.Substring(nameIndex, nameBlockEndIndex - nameIndex);
                if (stringBlock.Length > 0)
                    stringBlock=stringBlock.Replace("=>", "").Replace("\r\n", "");
            }
, где res - это ваша строка, содержащая ответ от сервера
спасибо всем за помощь, этот вариант работает на ура.
0
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 16:30 15
Цитата Сообщение от Монфрид Посмотреть сообщение
так можно:
C#
1
2
3
4
5
6
7
8
int nameIndex = res.LastIndexOf("[name]")+"[name]".Length;
            string stringBlock;
            if (nameIndex!=-1){
                int nameBlockEndIndex=res.IndexOf("[",nameIndex);
                stringBlock= res.Substring(nameIndex, nameBlockEndIndex - nameIndex);
                if (stringBlock.Length > 0)
                    stringBlock=stringBlock.Replace("=>", "").Replace("\r\n", "");
            }
, где res - это ваша строка, содержащая ответ от сервера

это делается с помощью одной строки -
C#
1
Regex.Match(res,@"\[name\] => (.+)").Groups[1].Value
Кликните здесь для просмотра всего текста
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
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication6
{
    internal class Program
    {
        private static void Main()
        {
            string res=@"Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [name] => Unnamed
                                [imageId] => 9
                                [status] => is_running
                                [type] => VirtualServer
                                [virtual_os_soft_id] => 
                                [virtual_mashines_soft_version] => 
                                [vps_order] => 0
                                [os_bits] => 64
                                [os_type] => ubuntu
                                [addresses] => Array
                                    (
                                        [public] => Array
                                            (
                                                [0] => Array
                                                    (
                                                        [ip] => 127.0.0.1
                                                        [primary_ip] => 1
                                                        [isp] => lite
                                                    )
                     
                                            )
                     
                                    )
                     
                                [full_id] => 181462-2
                            )
                     
                    )";
            
            Console.WriteLine(Regex.Match(res,@"\[name\] => (.+)").Groups[1].Value);
            Console.ReadKey();
        }
    }
}
0
Монфрид
1215 / 1025 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
19.06.2013, 16:33 16
использовать regex или стандартные средства - дело каждого, просто далеко не каждый программист знает их, и суппортить их невозможно
0
Winhttp22
156 / 124 / 24
Регистрация: 16.02.2013
Сообщений: 828
19.06.2013, 16:35 17
ну да - на вкус и цвет Многие готовы "войну и мир" писать... дело каждого
0
19.06.2013, 16:35
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2013, 16:35

Парсим charset веб страниц (RegEx)
Пример Input : text/html; charset='UTF-8' text/html; charset="UTF-8" text/html; charset=UTF-8 ...

В массив выводить данные-id клиента, данные серверу и данные, отправленные сервером
Здравствуйте. Имеется клиент-серверное приложение, вопрос по стороне сервера. Имеется...

Парсим текст
Доброго всем! Получаю исходный код страницы и гружу его в текстовый файл: import requests as...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru