Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Antykus
0 / 0 / 2
Регистрация: 10.05.2014
Сообщений: 230
1

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

14.03.2016, 14:51. Просмотров 448. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2016, 14:51
Ответы с готовыми решениями:

Чтение ответа от сервера
В общем регулярные выражения тут врятли помогут так как мы имеем дело не с...

Посылка запроса и получение ответа в xml
Как мне послать POST или GET запрос на определённый адрес. Например: ...

Парсинг xml ответа google maps
Всем привет, народ кто сталкивался с google maps и его ответом формата xml ?...

Посылка запроса POST и получение ответа в xml
Здравствуйте, товарищи. Как сформировать следующий запрос и отправить хосту? ...

Чтение XML
Доброго времени суток. Для интереса пишу читалку FB2 (XML).... Вот...

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

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  [ТС] 4
Alchi09, никак не хочет дать работать с xml, говорит "Путь содержит недопустимые знаки". Текст, который пытаюсь скормить xml указан выше
0
Alchi09
204 / 132 / 6
Регистрация: 15.11.2009
Сообщений: 1,654
15.03.2016, 10:21 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
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  [ТС] 6
Alchi09, дело в том, что doc.Load(g) , я так понимаю, хочет чтобы g представлял из себя путь к файлу. А у меня нет файла xml, у меня есть вебстраница html, которая в себе содержит xml'вскую структуру. Я эту структуру читаю в текстовую переменную
0
Alchi09
204 / 132 / 6
Регистрация: 15.11.2009
Сообщений: 1,654
15.03.2016, 10:54 7
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  [ТС] 8
Alchi09, спасибо, разобрался!
0
Пaтрик
427 / 395 / 132
Регистрация: 21.01.2012
Сообщений: 974
Завершенные тесты: 1
15.03.2016, 19:46 9
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
15.03.2016, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 19:46

чтение xml
Знаю что эта тема поднималась и неоднократно но я так в гугле нечего понятного...

чтение из xml
Доброго времени суток. Есть такой вопрос. вывожу из xml файла значения...

Чтение из XML
имеется xml-файл &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;CL...


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

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

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