Форум программистов, компьютерный форум CyberForum.ru

Рекурсивный парсинг - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать список студентов http://www.cyberforum.ru/cpp-beginners/thread721255.html
Сформировать список студентов, в котором студенты-отличники, проживающие в городе Москве, расположены по алфавиту. Список выдать на экран. Студентов-москвичей при выводе пометить
C++ Помогите написать формулу ,никак немогу написать (2k)! в ней Помогите написать формулу ,никак немогу написать (2k)! в ней http://www.cyberforum.ru/cpp-beginners/thread721222.html
C++ Из delphi в C++ (найти два числа среднее арифметическое которых ближе всего к числу у)
В последовательности чисел a1,.,an найти два числа среднее арифметическое которых ближе всего к числу у. uses crt; const nmax=100; var a:array of real; n,i,j,i1,i2:byte; x,mn:real; begin clrscr; randomize; repeat
Чтение из файла; функция, которая вставляет заданное число в отсортированній массив C++
Всем доброе утро! Мальчики, у меня есть две проблемки: 1)Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный Вот, есть код: #include <iostream> using namespace std; int main()
C++ Дано число n, переставить первую и последнюю цифры местами! http://www.cyberforum.ru/cpp-beginners/thread721189.html
Помогите плс !Дано число n, переставить первую и последнюю цифры местами!(Без использования массива)
C++ Есть в записи числа m цифры, которые совпадают с цифрами в записи числа n Дано два натуральных числа n(<=9999) и m (<=9999). Проверить, есть в записи числа m цифры, которые совпадают с цифрами в записи числа n. Оригинал: Дано два натуральних числа n(<=9999) i m (<=9999);Перевірити , чи э в записі числа m цифри які співпаnтдають з цифрами в записі числа n. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619

Рекурсивный парсинг - C++

06.12.2012, 12:03. Просмотров 866. Ответов 2
Метки (Все метки)

Есть формат на базе XML.
1. Файл начинается с
XML
1
<?xml version="..." encoding="ANSI..."?>
2. Поддерживается единственная кодировка только с латиницей.
3. Корневой тег ещё не утверждён, но будет конкретизирован, другие корневые теги поддерживаться не должны.
4. Версия пишется в специальном дочернем элементе корневого элемента в теге <vertion></vertion>
5. Как и в XML, корневой тег ровно один.
6. Не поддерживаются теги вида
XML
1
<tag/>
, или
XML
1
<tag />
.
7. Не поддерживаются свойства элементов.
8. Как и в XML, элементы могут вкладываться в теги.
9. Вложенный тег вложенного элемента может совпадать с тегом его родителя:
XML
1
2
3
4
<bone>
<bone>
</bone>
</bone>
.
10. Элементы с общим родителем могут иметь совпадающие теги:
XML
1
2
3
4
5
6
<skeleton>
<bone>
</bone>
<bone>
</bone>
</skeleton>
.
11. Элементы с общим родителем могут иметь теги совпадающие и между собой, и с тегом родителя:
XML
1
2
3
4
5
6
<bone>
<bone>
</bone>
<bone>
</bone>
</bone>
.
12. Иногда несколько элементов с совпадающими тегами предваряются их количеством в теге <count></count>, в этом случае каждый такой элемент имеет номер в теге <number></number>, номерация начинается с ноля в пределах одного родителя, номера строго возрастают без пропусков с единичным шагом:
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
<vertexes>
<count>8</count>
<vertex>
<number>0</number>
<x>-1.0</x>
<y>-1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>1</number>
<x>1.0</x>
<y>-1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>2</number>
<x>-1.0</x>
<y>1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>3</number>
<x>1.0</x>
<y>1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>4</number>
<x>-1.0</x>
<y>-1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>5</number>
<x>1.0</x>
<y>-1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>6</number>
<x>-1.0</x>
<y>1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>7</number>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</vertex>
<vertexes>
.
13. Можно ссылаться на другой тег без учёта иерархии:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<mash>
<vertexes>
<count>8</count>
<vertex>
<number>0</number>
<x>-1.0</x>
<y>-1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>1</number>
<x>1.0</x>
<y>-1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>2</number>
<x>-1.0</x>
<y>1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>3</number>
<x>1.0</x>
<y>1.0</y>
<z>-1.0</z>
</vertex>
<vertex>
<number>4</number>
<x>-1.0</x>
<y>-1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>5</number>
<x>1.0</x>
<y>-1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>6</number>
<x>-1.0</x>
<y>1.0</y>
<z>1.0</z>
</vertex>
<vertex>
<number>7</number>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</vertex>
<vertexes>
<triangles>
<count>12</count>
<triangle>
<number>0</number>
<a>0</a>
<b>1</b>
<c>2</c>
</triangle>
<triangle>
<number>1</number>
<a>1</a>
<b>3</b>
<c>2</c>
</triangle>
<triangle>
<number>2</number>
<a>0</a>
<b>4</b>
<c>1</c>
</triangle>
<triangle>
<number>3</number>
<a>1</a>
<b>4</b>
<c>5</c>
</triangle>
<triangle>
<number>4</number>
<a>0</a>
<b>2</b>
<c>4</c>
</triangle>
<triangle>
<number>5</number>
<a>2</a>
<b>6</b>
<c>4</c>
</triangle><triangle>
<number>6</number>
<a>1</a>
<b>5</b>
<c>3</c>
</triangle><triangle>
<number>7</number>
<a>3</a>
<b>5</b>
<c>7</c>
</triangle>
<triangle>
<number>8</number>
<a>2</a>
<b>3</b>
<c>6</c>
</triangle>
<triangle>
<number>9</number>
<a>3</a>
<b>7</b>
<c>6</c>
</triangle>
<triangle>
<number>10</number>
<a>4</a>
<b>6</b>
<c>5</c>
</triangle>
<triangle>
<number>11</number>
<a>5</a>
<b>6</b>
<c>7</c>
</triangle>
</triangles>
</mash>
, где <a></a>, <b></b> и <c></c> в <triangle></triangle> ссылаются <number></number> в <vertex></vertex>. Можно ссылаться и на другие теги.
Дана std::string, содержащая текст одного элемента с начальным и концевым тегами.
Надо:
1. Найти текст элемента за вычетом начального и концевого тегов.
2. В цикле перебрать все дочерние элементы, для каждого:
2.1. Найти его текст с начальным с концевым тегами, не путая концевые теги дочернего и внучатого элементов.
2.2. Найти начальный тег.
Как это сделать?
Как зовут американскую ANSI кодировку?

Добавлено через 1 час 23 минуты
Можно ли поиск текста дочернего элемента делать так:
Код
1. std::string left=""
2. От текущей позиции p1 ищем первую открывающую угловую скобку, текущая позиция p2=сразу за ней.
3. От текущей позиции p2 ищем первую закрывающую угловую скобку, текущая позиция p3=сразу перед ней, а p4 сразу за ней.
4. Копируем подстроку от p2 до p3 ними в std::string SubTagCind.
5. От текущей позиции p4 ищем открывающую угловую скобку, текущая позиция p5 сразу за ней, p6 - на ещё следующем символе.
6. От текущей позиции p5 ищем первую закрывающую угловую скобку, текущая позиция p7 сразу перед ней, p9 сразу за ней, а p8 между ними непосредственно на закрывающей угловой скобке.
7. Если в позиции p5 не слеш, то std::string left=std::string left+'/'+подстрока от p5 до p7
8. Если в позиции p5 слеш и std::string left!="", то:
8.1. p1=p9
8.2. Переход к пункту 5.
9. Если в позиции p5 слеш и std::string left=="" и std::string SubTagCind==подстрока от p6 до p7, то:
9.1. От p1 до p8 - текст дочернего узла с начальным и концевым тегом.
9.2. В std::string SubTagCind начальный тег данного узла за вычетом угловых скобок.
9.3. p1 на следующем шаге=p9 на текущем.
10. Если в позиции p5 слеш и std::string left=="" и std::string SubTagCind!=подстрока от p6 до p7, то файл не корректен.
?

Добавлено через 34 секунды
Или есть лучшее решение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru