Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.78
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
#1

Парсинг XML - C++

11.10.2011, 07:03. Просмотров 10099. Ответов 37
Метки нет (Все метки)

Как его на плюсах лучше сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 07:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг XML (C++):

Парсинг xml - C++
При написание парсера возникла проблема, как интерпретировать следующий xml <?xml version="1.0" ?> <note item="description"> ...

Парсинг кодировки в начальном теге xml - C++
Есть строка <?xml version="1.0" encoding="UTF-8"?>, <?xml version="1.0" encoding="ANSI-1251"?>, или любая другая, начинающаяся на <?xml....

Парсинг - C++
Всем доброго времени суток. Только начал изучать c++ и нужна помощь. Есть код, нужно сделать парсинг. Не понимаю , что это и как его...

Парсинг - C++
Привет всем вообщем нужно удачно спарсить данные (gold, money, fuel, lvl, model) вид ответа хоть и xml но данные к сожалению находятся не в...

Парсинг - C++
Привет всем ) Есть небольшая проблема например имеется переменная String t = '<img src="http://site.ru/u3124123/d_hwre2.jpg"/>...

Парсинг строки - C++
Добрый день. Помогите с решением следующей задачи. На вход идет строка из 0 и 1, например, 110100011, нужно распарсить её на составляющие....

37
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
11.10.2011, 09:11 #16
taras atavin, Скорее всего библиотека, как она называется нужно искать.
Много чего фигово делать без библиотек, да даже за отрисовку тех же окон отвечает определенная библиотека.

Добавлено через 2 минуты
taras atavin, Можешь сделать и без регулярок, но возьмем какую то абстрактную задачу....с регулярками она будет разбираться в 10 строк, а вручную в 100 строк кода.... с регулярками так же проще модификация обычно.

Добавлено через 41 секунду
taras atavin, В delphi есть регулярные выражения!
0
co6ak
Кошковед
514 / 502 / 30
Регистрация: 12.04.2010
Сообщений: 1,392
11.10.2011, 09:19 #17
в Qt есть все для парсера XML. в частности элемент QDomElement.
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
11.10.2011, 09:48  [ТС] #18
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Можешь сделать и без регулярок, но возьмем какую то абстрактную задачу....с регулярками она будет разбираться в 10 строк, а вручную в 100 строк кода.... с регулярками так же проще модификация обычно.
Для тех 10 строк кто то больше 100 уже запихал в библиотеку. И если при модификации не надо в них лезть, значит они общие для всего класса задач. Что поставляет библиотека? Библиотека поставляет функции. Ну может ещё к некоторым прилагаются оболочечные классы. Но я же могу и свои 100 (или больше) строк точно также вынести в функцию и получить ту же быструю, простую и удобную модификацию. Теперь вопросы:
1. На сколько в это случае затянется первичная разработка?
2. Какие есть бесплатно распространяемые библиотеки?
3. Какие из них дружат со студией?

Добавлено через 51 секунду
Цитата Сообщение от vitaly1981 Посмотреть сообщение
taras atavin, В delphi есть регулярные выражения!
Да ну! Задача: дан TStrings со списком файлов, надо найти индексы файлов, чьи имена удовлетворяют шаблону "*.bmp". Это самая простая регулярка. И как же это будет на делфи?
Delphi
1
2
3
4
for i:=0 to list.Linses.Count-1 do
begin
       if lsit.Lines=="*.bmp" then s:=s+IntToStr(i)+', ';
end;
? Работать не будет.

Добавлено через 1 минуту
Цитата Сообщение от vitaly1981 Посмотреть сообщение
На счет вложений, тут как выражение составишь так и будет.
То есть допускается? И как искать границы элемента с учётом того, что в него может быть вложен элемент с той же парой тегов?
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
11.10.2011, 10:01 #19
taras atavin, Так эти классы тебе еще написать нужно )
И вероятность ошибок при ручном разборе несколько больше.
Все упирается в то что нужно изучить систему регулярных выражений (для кого то они могут быть сложными для понимания, кто то быстро разберется). А написать это быстро.
Я последнее время с Qt работаю, она бесплатна, остальные не помню, поищи сам.
Да думаю что практически все, в том числе и Qt, кстати студия как бы не бесплатна если что....

То что ты написал не будет работать и на C++ .... там есть функции для работы с регулярными выражениями, какие точно не знаю, но знаю что люди их используют.

Цитата Сообщение от taras atavin Посмотреть сообщение
То есть допускается? И как искать границы элемента с учётом того, что в него может быть вложен элемент с той же парой тегов?
У регулярных выражений есть некоторые свойства, например "жадность" и т.п. с помощью этих свойств можно регулировать некоторые вещи касаемые распознования. Однако если ты вложенные одинаковые тэги не будешь использовать, это тебя избавит от большого геммороя в составлении выражения )
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
11.10.2011, 12:52  [ТС] #20
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Однако если ты вложенные одинаковые тэги не будешь использовать, это тебя избавит от большого геммороя в составлении выражения
Может и буду, пока не знаю. Допускается ли это по правилам XML? Можно ли по правилам XML менять семантику одного и того же тега в зависимости от того, куда он вложен?
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
11.10.2011, 12:56 #21
taras atavin, XML это всего лишь структурирование, думаю что на это там ограничения нет, однако вряд ли есть много программ, которые это используют и понимают
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
18.10.2011, 07:28  [ТС] #22
Я сочинил пример того, что собираюсь парсить:
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
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ladle>
<buttom></buttom>
<axis>
<coordinates>
<x></x>
<y></y>
<coordinates>
</axis>
<radiuds></radiuds>
<height></height>
</ladle>
<tuyere>
<type>донная</type>
<coordinates>
<x></x>
<y></y>
</coordinates>
</tuyere>
<electrode>
<radius>20см</radius>
<coordinates>
<x></x>
<y></y>
</coordinates>
<phase>A</phase>
</electrode>
<electrode>
<radius>20см</radius>
<coordinates>
<x>-1м</x>
<y>1,732050808м</y>
</coordinates>
<phase>B</phase>
</electrode>
<electrode>
<radius>20см</radius>
<coordinates>
<x>-1м</x>
<y>-1,732050808м</y>
</coordinates>
<phase>C</phase>
</electrode>
</ladle>
<grid>
<steps>
<space>10см</space>
<time>0.5с</time>
</steps>
</grid>
</root>
.
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
18.10.2011, 07:42 #23
Можно было значительно оптимальнее сделать
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
18.10.2011, 08:19  [ТС] #24
И как же?
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
18.10.2011, 08:32 #25
Наример это:
XML
1
2
3
4
5
6
7
<buttom></buttom>
<axis>
<coordinates>
<x></x>
<y></y>
<coordinates>
</axis>
Заменить на вот это:
XML
1
<buttom x="0м" y="0м"/>
И по аналогии...
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
18.10.2011, 08:37  [ТС] #26
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Заменить на вот это:
XML
1
<buttom x="0м" y="0м"/>
и всё запутать? buttom - нижний край, по смыслу этого понятия оно имеет только одну координату, причём, по z.
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
18.10.2011, 08:41 #27
Не туда посмотрел, вот другой пример
XML
1
2
3
4
5
6
7
8
<electrode>
<radius>20см</radius>
<coordinates>
<x></x>
<y></y>
</coordinates>
<phase>A</phase>
</electrode>
XML
1
<electrode radius="20см" x="0м" y="2м" phase="A"/>
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
18.10.2011, 09:37  [ТС] #28
И в каждом конкретном случае заново выбирать между тегом и атрибутом? Одними тегами проще.
0
solar_wind
759 / 750 / 42
Регистрация: 06.07.2009
Сообщений: 2,977
Завершенные тесты: 1
18.10.2011, 09:50 #29
taras atavin, Так это как структурируешь и смотря чем распознавать будешь.
Одними тэгами плохо читается.
0
Mr.X
Эксперт С++
3054 / 1699 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.10.2011, 09:54 #30
taras atavin, а в каком виде вы хотите получить результат парсинга?
0
18.10.2011, 09:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 09:54
Привет! Вот еще темы с ответами:

Рекурсивный парсинг - C++
Есть формат на базе XML. 1. Файл начинается с &lt;?xml version=&quot;...&quot; encoding=&quot;ANSI...&quot;?&gt; 2. Поддерживается единственная кодировка только...

Парсинг списка - C++
Есть список(char): id@in;in;in;in@salt@rand:price:count/key, id@in;in;in;in@salt@rand:price:count/key, ...

Парсинг шрифтов - C++
Всем привет. Вот заинтересовала тема о шрифтах, подскажите пожалуйста литературу по шрифтам, хотелось бы научиться считывать файл шрифта...

Парсинг текста - C++
Снова здравствуйте вообщем делаю Post запрос на который приходит ответ вида ...


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

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

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