Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2016, 22:12   #1
KUM25
 
Регистрация: 22.02.2013
Сообщений: 5
Печаль Парсинг XML

Всем привет. Никак не могу побороть парсинг. Есть XML:
Код HTML:
<DataSet xmlns="http://services.indexes.com/">
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="tbCity">
<xs:complexType>
<xs:sequence>
<xs:element name="region" type="xs:string" minOccurs="0"/>
<xs:element name="district" type="xs:string" minOccurs="0"/>
<xs:element name="city" type="xs:string" minOccurs="0"/>
<xs:element name="id" type="xs : double" 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">
<NewDataSet xmlns="">
<tbCity diffgr:id="tbCity1" msdata:rowOrder="0">
<region>Харківська</region>
<district>Дергачівський</district>
<city>Комунар</city>
<id>33000000081148</id>
</tbCity>
<tbCity diffgr:id="tbCity2" msdata:rowOrder="1">
<region>Харківська</region>
<district>Дергачівський</district>
<city>Пересічне</city>
<id>1008302397293</id>
</tbCity>
</NewDataSet>
</diffgr : diffgram>
</DataSet>
Как мне в Combobox записать города Харьков и Днепропетровск. В XML может быть 1,2,3 и т.д. городов. Заранее благодарю отозвавшимся.

Последний раз редактировалось Вадим Мошев; 04.03.2016 в 21:41.
KUM25 вне форума Ответить с цитированием
Старый 04.03.2016, 09:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А как парсишь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.03.2016, 13:25   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

парсер как называется-то?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.03.2016, 14:25   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

это не XML, это XSD по которому XML можно прочекать на корректность. Зачем через него данные гонять... ужос.
Человек_Борща вне форума Ответить с цитированием
Старый 04.03.2016, 15:10   #5
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Я так понимаю у коллеги KUM25 города заключены в теги <city>Пересічне</city>. Можно не парсить, просто искать их поиском и отсекать все ненужное

Код:
...
N := Pos('<city>', StrData);
if N > 0 then
    StrData := RightStr(StrData, Length(StrData) - N - 6);
...
igh0st вне форума Ответить с цитированием
Старый 04.03.2016, 17:28   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А,это XML сразу со схемой проверки целостности, прикольно.
Примерно так:
Код:
var
 xml: TXmlDocument;
 xmlNodes: TXMLNodes;
 node:TXMLNode;
 i:Integer;
begin
	xml := TXmlDocument.Create();
	xml.loadXML('путь к файлу');
	xmlNodes :=  xml.selectNodes('//diffgr:diffgram/NewDataSet/tbCity');
	for i:=0 to xmlNodes.Count -1 do
	...работа с содержимым городов
end;
Человек_Борща вне форума Ответить с цитированием
Старый 04.03.2016, 17:58   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Похоже на выгруженный в xml датасет средствами ADO.NET.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.03.2016, 21:33   #8
KUM25
 
Регистрация: 22.02.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
это не XML, это XSD по которому XML можно прочекать на корректность. Зачем через него данные гонять... ужос.
Вот такой чудо-результат возвращает наш корпоративный сайт

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А,это XML сразу со схемой проверки целостности, прикольно.
Примерно так:
Код:
var
 xml: TXmlDocument;
 xmlNodes: TXMLNodes;
 node:TXMLNode;
 i:Integer;
begin
	xml := TXmlDocument.Create();
	xml.loadXML('путь к файлу');
	xmlNodes :=  xml.selectNodes('//diffgr:diffgram/NewDataSet/tbCity');
	for i:=0 to xmlNodes.Count -1 do
	...работа с содержимым городов
end;
Большое спасибо. Попробую

Цитата:
Сообщение от min@y™ Посмотреть сообщение
парсер как называется-то?
Один раз в жизни парсил и то самый примитивный XML вот таким способом
Response.Text := IdHTTP1.Post('http://services.ukrposhta.com/barcodestatistic/barcodestatistic.asmx/GetBarcodeInfo', LoginData);
XMLDocument1.LoadFromXML(Response.T ext);
XMLDocument1.Active := True;
Memo1.Text := Trim(XMLDocument1.DocumentElement.C hildValues['eventdescription']);
KUM25 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#. Парсинг XML-файла с использованием библиотеки System.xml.linq Gift020 Помощь студентам 5 04.04.2013 13:44
Парсинг xml C# Dominatorsha Помощь студентам 5 19.02.2013 14:53
Парсинг XML Aleskandr PHP 1 24.08.2011 14:32
Парсинг XML. Abuhamed PHP 1 01.06.2011 22:24
Парсинг XML [Smarik] Общие вопросы Delphi 6 13.03.2010 17:38