С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для Antykus
0 / 0 / 2
Регистрация: 10.05.2014
Сообщений: 230

Чтение XML ответа от сайта

14.03.2016, 14:51. Показов 1511. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой код
C#
1
2
3
4
5
6
7
8
9
10
11
            string ur = string.Format("http://{0}:{1}/??type=tralala",IPSRV,WebPort);
            Uri uri = new Uri(ur);
            WebBrowser wb = new WebBrowser();
            wb.Navigate(uri);
 
            while (wb.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
 
            string s = wb.Document.Body.OuterText;
Возвращает такое содержимое в string s

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?xml version="1.0" encoding="utf-8" ?> 
<DataTable xmlns="http://schemas.datacontract.org/2004/07/System.Data">
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="t" msdata:UseCurrentLocale="true">
            <xs:complexType>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="t">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="id" type="xs:int" minOccurs="0" /> 
                                <xs:element name="name" type="xs:string" minOccurs="0" /> 
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
        <DocumentElement xmlns="">
            <t diffgr:id="t1" msdata:rowOrder="0">
                <id>252</id> 
                <name>госпиталь № 666</name> 
            </t>
            <t diffgr:id="t2" msdata:rowOrder="1">
                <id>255</id> 
                <name>Госпиталь № 35</name> 
            </t>
            <t diffgr:id="t3" msdata:rowOrder="2">
                <id>256</id> 
                <name>Домодедово1111111</name> 
            </t>
            <t diffgr:id="t4" msdata:rowOrder="3">
                <id>257</id> 
                <name>Шереметьево</name> 
            </t>
            <t diffgr:id="t5" msdata:rowOrder="4">
                <id>770</id> 
                <name>Новосибирск</name> 
            </t>
            <t diffgr:id="t6" msdata:rowOrder="5">
                <id>834</id> 
                <name>Продукты</name> 
            </t>
            <t diffgr:id="t7" msdata:rowOrder="6">
                <id>835</id> 
                <name>Обувной</name> 
            </t>
            <t diffgr:id="t8" msdata:rowOrder="7">
                <id>917</id> 
                <name>Загород1</name> 
            </t>
            <t diffgr:id="t9" msdata:rowOrder="8">
                <id>918</id> 
                <name>Загород2</name> 
            </t>
            <t diffgr:id="t10" msdata:rowOrder="9">
                <id>919</id> 
                <name>Работа</name> 
            </t>
            <t diffgr:id="t11" msdata:rowOrder="10">
                <id>920</id> 
                <name>49,3825289</name> 
            </t>
            <t diffgr:id="t12" msdata:rowOrder="11">
                <id>921</id> 
                <name>Новый адрес</name> 
            </t>
            <t diffgr:id="t13" msdata:rowOrder="12">
                <id>922</id> 
                <name>Алупка</name> 
            </t>
        </DocumentElement>
    </diffgr:diffgram>
</DataTable>
Мне нужно пробежаться по содержимому в поисках значений name, например, да не знаю как. Думал посредством xmlreader'а, но тот ругается на структуру. Просьба подсказать, чем и как эту табличку было бы удобно и быстро проштудировать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2016, 14:51
Ответы с готовыми решениями:

API ВК, чтение ответа в формате XML
Доброго времени суток, решил попробовать поработать с API ВК, и столкнулся с проблемой. Программа должна отправлять запрос на получение...

Чтение удалённого XML-файла со своего web-сайта
Мне необходимо осуществить чтение удалённого XML-файла со своего web-сайта. Для того, чтобы осуществить чтение этого удалённого...

Чтение XML файла, без использования встроенных средств работы с XML
Разработать программу на любом из перечисленных языков программирования c#. Программа должна читать XML-файл. Разбирать элементы не...

8
9 / 9 / 5
Регистрация: 07.11.2014
Сообщений: 112
14.03.2016, 16:02
Цитата Сообщение от Antykus Посмотреть сообщение
Мне нужно пробежаться по содержимому в поисках значений name, например, да не знаю как. Думал посредством xmlreader'а, но тот ругается на структуру. Просьба подсказать, чем и как эту табличку было бы удобно и быстро проштудировать
Если вы обращаетесь на wcf сервис тогда вам нужно в сторону wcf. А если нет тогда советовал бы использовать XML LINQ.
http://professorweb.ru/my/LINQ... l5/5_6.php
0
 Аватар для Alchi09
206 / 135 / 6
Регистрация: 15.11.2009
Сообщений: 1,654
15.03.2016, 09:14
хз, запустить бы, точку останова поставить и посмотреть бы

C#
1
2
3
4
5
XmlDocument doc = new XmlDocument();                     
doc.Load(i);
 XmlNodeList tegN = doc.GetElementsByTagName("t");
 foreach  (XmlNode node in tegN) 
                    {                                MessageBox.Show(node.ChildNodes[1].InnerText));                                                 }
0
 Аватар для Antykus
0 / 0 / 2
Регистрация: 10.05.2014
Сообщений: 230
15.03.2016, 09:58  [ТС]
Alchi09, никак не хочет дать работать с xml, говорит "Путь содержит недопустимые знаки". Текст, который пытаюсь скормить xml указан выше
0
 Аватар для Alchi09
206 / 135 / 6
Регистрация: 15.11.2009
Сообщений: 1,654
15.03.2016, 10:21
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
 
namespace XMLpar
{
    class Program
    {
        static void Main(string[] args)
        {
 
            string g = @"1.xml";
 
            Console.WriteLine(g);
            XmlDocument doc = new XmlDocument();
            string str_com = String.Empty;
            doc.Load(g);
            XmlNodeList tegN = doc.GetElementsByTagName("t");
            foreach (XmlNode node in tegN)
            {
                Console.WriteLine(node.ChildNodes[1].InnerText);
                
            }
 
 
            Console.ReadLine();
 
        }
 
        
    }
}
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
<?xml version="1.0" encoding="utf-8" ?> 
<DataTable xmlns="http://schemas.datacontract.org/2004/07/System.Data">
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="t" msdata:UseCurrentLocale="true">
            <xs:complexType>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="t">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="id" type="xs:int" minOccurs="0" /> 
                                <xs:element name="name" type="xs:string" minOccurs="0" /> 
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
        <DocumentElement xmlns="">
            <t diffgr:id="t1" msdata:rowOrder="0">
                <id>252</id> 
                <name>Вася</name> 
            </t>
            <t diffgr:id="t2" msdata:rowOrder="1">
                <id>255</id> 
                <name>Петя</name> 
            </t>
        </DocumentElement>
    </diffgr:diffgram>
</DataTable>
Добавлено через 1 минуту
string str_com = String.Empty;
сорри, лишняя конструкция, копипастил из старого проекта.
У меня код работает как надо, имена выводит в консоль

Добавлено через 4 минуты
если из переменной читать содержимое файла, то
C#
1
2
3
4
5
6
7
8
9
10
11
12
string g = @"1.xml";
            Console.WriteLine(g);
            XmlDocument doc = new XmlDocument();
           // doc.Load(g);
            doc.LoadXml(File.ReadAllText(g)); // изменения тут
            XmlNodeList tegN = doc.GetElementsByTagName("t");
            foreach (XmlNode node in tegN)
            {
                Console.WriteLine(node.ChildNodes[1].InnerText);
                
            }
            Console.ReadLine();
0
 Аватар для Antykus
0 / 0 / 2
Регистрация: 10.05.2014
Сообщений: 230
15.03.2016, 10:29  [ТС]
Alchi09, дело в том, что doc.Load(g) , я так понимаю, хочет чтобы g представлял из себя путь к файлу. А у меня нет файла xml, у меня есть вебстраница html, которая в себе содержит xml'вскую структуру. Я эту структуру читаю в текстовую переменную
0
 Аватар для Alchi09
206 / 135 / 6
Регистрация: 15.11.2009
Сообщений: 1,654
15.03.2016, 10:54
Antykus, читай внимательно предыдущий пост
doc.LoadXml(File.ReadAllText(g)); // изменения тут

в вашем случае

string s = wb.Document.Body.OuterText;
doc.LoadXml(s); // изменения тут
1
 Аватар для Antykus
0 / 0 / 2
Регистрация: 10.05.2014
Сообщений: 230
15.03.2016, 11:05  [ТС]
Alchi09, спасибо, разобрался!
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
15.03.2016, 19:46
Antykus, указанная вами XMLка - это сериализованный объект класс DataTable, так и работайте с ней как с DataTable:

C#
1
2
3
4
5
6
7
8
9
10
using (StringReader reader = new StringReader(s))
using (DataTable table = new DataTable())
{
    table.ReadXml(reader);
 
    for (int i = 0; i < table.Rows.Count; i++)
    {
        Console.WriteLine(table.Rows[i].Field<string>("Name"));
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2016, 19:46
Помогаю со студенческими работами здесь

Обработка xml ответа
Здравствуйте! Для работы приложения необходимо отправить запрос на сервер и обработать ответ, который передается в виде xml. В описании...

Убрать XML из ответа
Здравствуйте. Asp.Net webService (targetFramework=&quot;4.5.1&quot;) возвращает значение в виде &lt;string...

Чтение ответа от сервера
В общем регулярные выражения тут врятли помогут так как мы имеем дело не с JSON, а с xml. Нужно вытащить из таких строк: ...

Отправка и получение ответа XML
Здравствуйте. Я в VBA не очень (учусь) и с такими задачами еще не сталкивался, - руководство поставило задачу сделать макрос проверки...

Jersey и возврат XML ответа
Тестировал небольшой сервис отвечающий xml'ем и стало интересно что будет делать Jersey если сказать что ответ должен быть XML, а объкт...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru