Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
1

Полный парсинг Xml на c#

02.06.2014, 15:08. Просмотров 1478. Ответов 30
Метки нет (Все метки)

Есть книга в формате fb2 -
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
  <description>
    <title-info>
      <genre>sf_action</genre>
      <author>
        <first-name>Сергей</first-name>
        <last-name>Недоруб</last-name>
      </author>
      <book-title>Признаки жизни</book-title>
      <annotation>
        <p>В ранние годы, когда Зона не была изучена, единственным оплотом защищенности и уверенности в завтрашнем дне был клан «Набат». Место, в котором брат стоял за брата. Еще ни разу здесь не было случаев удара в спину — до того момента, как бродяга по кличке Самопал предал тех, кто ему доверял, и привел мирный караван к гибели, а над кланом нависла угроза войны с неизвестной доселе группировкой.</p>
        <p>Молодой боец «Набата» по кличке Шептун получает задание: найти Самопала и вернуть живым для суда. Сталкер еще не знает, что самое страшное — это не победить своего врага, а понять его. Чтобы справиться с заданием и вернуть отступника, Шептуну придется самому испытать собственную веру на прочность.</p>
        <p>Война идеологий начинается.</p>
      </annotation>
      <date></date>
      <coverpage>
        <image l:href="#cover.jpg" />
      </coverpage>
      <lang>ru</lang>
      <sequence name="S.T.A.L.K.E.R." number="0" />
    </title-info>
    <document-info>
      <author>
        <first-name></first-name>
        <last-name></last-name>
      </author>
      <program-used>ExportToFB21, FictionBook Editor Release 2.6, FB Editor v2.0</program-used>
      <date value="2012-04-10">10.04.2012</date>
      <id>OOoFBTools-2012-4-10-19-30-59-1101</id>
      <version>1.0</version>
    </document-info>
    <publish-info>
      <book-name>Сергей Недоруб   «Признаки жизни»</book-name>
      <publisher>АСТ, Астрель</publisher>
      <city>М.</city>
      <year>2011</year>
      <isbn>978-5-17-073642-3, 978-5-271-36114-2</isbn>
      <sequence name="S.T.A.L.K.E.R." number="0" />
    </publish-info>
    <custom-info info-type="general">Подписано в печать 11.05.11.
Тираж 10 000 экз. 
Заказ № 4124105.
344 стр.
</custom-info>
  </description>
  <body>
    <title>
      <p>Сергей Недоруб</p>
      <p>ПРИЗНАКИ ЖИЗНИ</p>
    </title>
    <section>
      <title>
        <p>Глава 1</p>
        <p>Камера</p>
      </title>
      <p>Эта камера видела многое. Своим встроенным объективам она наблюдала Зону снаружи, в образе далекой стены на фоне грозовых туч, за которой затаилась неизвестность. Видела изнутри, в обманчивой форме покрытых серой чешуей деревьев, постоянного тумана и струящейся над землей коварной дымки. Своей внешней памятью на шестнадцать гигабайт камера помнила однообразные будни угрюмых людей в ватниках и потрепанной форме, где армейской, а где стилизованной под военную. Камера прожила долгую жизнь по меркам любой техники в Зоне, не предназначенной для нее: успела запечатлеть дюжину природных аномалий, пару десятков артефактов, три из которых на видео так и не проявились. Помнила она также несколько ранений и одну смерть.</p>
      <p>Теперь камера безучастно смотрела на двигающиеся впереди нее спины носильщиков, скрытые массивными, раздувшимися рюкзаками. Картинка дергалась: держащий ее человек шел вместе со всеми и снимал на ходу.</p>
      <p>— Антоха, дай пять! — крикнул Опер, стараясь держать камеру ровно. Когда-то он неплохо разбирался в том, как снимать по-человечески, но в Зоне быстро забываются все навыки, кроме постоянно используемых. Так что теперь Опер помнил лишь о том, что объект лучше держать в центре кадра — больше его товарищам во время просмотра ничего не было нужно. Собственно, его и Опером прозвали, так как был оператором, пусть и самоучкой. О том, что камера ему же и принадлежала, все быстро забыли, включая его самого. В «Набате» почти не было такого понятия, как личные шмотки.</p>
      <p>— Отвали, — буркнул Антоха и тут же вляпался сапогом в мокрую глинистую почву. Кляня болото на чем свет стоит, он все же не забыл на всякий случай отойти в сторону, так как умудрился забрызгать грязью охранника каравана. Охранника звали Мивина. Поговаривали, что люди, которые спрашивали его о происхождении клички, после этого долго собирали зубы по одному. Опер в это не особо верил. В конце концов, если погоняло не устраивает, то его всегда можно изменить. В «Набате» с этим бы проблем не было.</p>
      <p>Помимо Мивины, охранником каравана поставили Самопала. Опер лишь поморщился, глянув на него, и отвел камеру, чтобы Самопал ненароком не угодил в кадр. Нечего было портить фильм случайно попавшим в него молчаливым придурком. Никто не любил Самопала и не скрывал этого. Видимо, его потому и поставили в охранку, чтобы не маячил перед глазами на базе. Отдохнуть от него, хоть до вечера…</p>
      <p>Самое забавное, что ничего явно бесящего в Самопале не было. Никто не обвинил бы его в воровстве, витиеватости. Этот вечно хмурый парень с волосами чуть ниже плеч никому не мешал и не помогал, он просто жил, ходил со всеми в рейды по дремучим местам Зоны, если это от него требовалось, жевал тушенку у общего обеденного камня, если некуда было уйти. Словом, он не чурался общества — но только тогда, когда не было выбора. Самопал не пренебрегал возможностью уединиться, хотя замкнутым не был. Он был просто серым парнем, который мог абстрагироваться от остальных. Стоило ему отойти на пять метров в сторону или помолчать хотя бы пять минут, как все о нем тут же забывали. А когда снова замечали, то с досадой отворачивались. Самопал всех бесил, и никто не мог сказать почему. В «Набате» нельзя было явно пренебрегать желанием других потусоваться вместе и о чем-то перетереть — но Самопал именно тем и парил, что умел делать это неявно.</p>
      <p>Кроме того, Опер не любил охранников. Ну какая может быть охрана в Зоне, если ты не вип? Тут все были едины — во всяком случае, «набатовцы». У всех здесь равные права, обязанности и ограничения. Жизнь в клане обычно неприхотливая. Выйти на промысел, вернуться с пустыми руками, обсудить, как заморочить головы воякам, — вот и весь быт. Иногда, конечно, удавалось найти и артефакт. Опер обожал эти диковины. Побаивался, но любил. Как хорошо, что Грач распорядился не сдавать артефакты сразу по факту их добычи, предпочтя вместо этого их накапливать и отдавать по две-три штуки, когда оттягивать дальше становилось уже совсем невежливо. Все равно «набатовцам» никто не ставил четких сроков, как и задач. Знай себе ищи всякую дребедень, желательно со странностями, да сдавай на Барьер. Взамен получишь харчи и неприкосновенность. Вот Грач и решил, что находить можно много, а делать вид, что мало. Можно сказать, не врал — в клане случалось, что новые артефакты не находили целый месяц. Грач открыто ссылался на Зону с ее непредсказуемостью, но Опер понимал, что тут все гораздо прозаичнее. Артефакты ищет не только «Набат». Кто-то еще здесь промышляет. И самое хреновое, что успешно, раз этот кто-то может своими находками торговать на тех же условиях, если не на лучших.</p>
      <p>«А ведь этим нас могут и развалить», — почти в панике подумал Опер, засняв крупным планом неоновое свечение из рюкзака Антохи. В самом деле, что будет, если вояки задумаются, стоит ли спонсировать целую контору сталкеров, вздумавших работать организованно, когда кругом полно самостоятельных охотников, более гибких в переговорах? Выживет ли тогда клан?</p>
      <p>Конечно, выживет. Военным не нужны конфликты в Зоне. А они неизбежно появятся, если населять новочернобыльскую территорию будут озлобленные шакалы в человеческом обличье. Эти, случалось, и оружие носили. Опер усмехнулся, покачав головой. Ну зачем оружие в Зоне? От кого?</p>
      <p>Хотя, конечно, временами постреливать приходилось. В этих краях то и дело попадалась разная нечисть. Да еще и такая, что в лесу встретишь — грибы отдашь. Какие-то прямоходящие лысые гуманоиды, дикие до невозможности. То ли бывшие люди, то ли будущие животные, сразу и не разберешь. Одним словом, мутанты. Ботаники объясняли, что именно мутанты, так как не могут иметь потомства, а значит, не имеют собственной природной ниши. Или наоборот. Опер никогда не вникал в такие подробности — уж очень сильно его передергивало при мысли о встрече с кем-то из монстров. Говорить с ними было бесполезно, орать тоже. Те не понимали никакого языка, кроме свинцового.</p>
      <p>То же касалось и более простых тварюк, наподобие тех же псов да кабанов, которых с момента новой катастрофы развелось сверх всяких терпимостей. Но на клан они не нападали — уже хлеб. А вот акробаты в противогазах Опера выбешивали не на шутку. Снорки. Кто они и что они могут дать миру? Риторические вопросы. Прыгающие психи, не похожие на людей, были, по всей видимости, сбрендившими остатками былой военной мощи, направленной три года назад исследовать взрыв на ЧАЭС.</p>
      <p>Вспомнив про многострадальный энергоблок, Опер лишь печально вздохнул. Вот история атомной станции его в самом деле тревожила, задевала некие безнадежно расстроенные струны души, о которых сталкер ранее и не подозревал. Тяжко ему было смотреть на то, что случилось с его родной страной. Развалили, сволочи, расшатали и снаружи, и изнутри. И все не угомонятся. Хрен вам, все равно выстоим!</p>
      <p>Зону не победить стволами. Стрелять надо было раньше, выборочно и не задумываясь. Опер мог назвать с десяток имен, внесение которых в расстрельный список, по его мнению, помогло бы очистить мир от политической дряни. Он поделился своими мыслями с товарищами и с удивлением понял, что все его горячо поддерживают. Только вот списки у всех получились разные. Да и одно дело призвать, и совсем другое — выполнить. Но это ничего не меняло. В Зоне часто говорили о доме, смотрели на остальной мир как бы из окна иллюминатора, приподнявшись над системами и структурами, освободившись от одних форм патриотизма и влившись в другие. Говорили, решали, спорили до хрипоты — и устало возвращались к повседневности, торопливо, словно испугавшись собственных мыслей. Как поговаривал Грач, «крюк замкнулся».</p>
      <p>Многие не любили оружие. В Зоне на него смотрели как на вызов самому себе. Ощущение ребристой рукояти в ладони было настолько горячим, что растапливало психологические барьеры, за которыми можно было прятать свою волю и строить из себя человека маленького, ни на что повлиять не способного. Оружие всех делило на сильных и мертвых. Далеко не каждый желал выяснять, к какой когорте он принадлежит.</p>
      <p>Так что в Зоне никак нельзя без особого взгляда на вещи. Если носить оружие станет «Набат», то очень скоро им обвешается вся Зона. Как народ раздобудет себе стволы — дело десятое, вояки помогут. Важен сам прецедент, точнее, его недопустимость. Нельзя раздавать оружие там, где нет милиции. Капитальной милиции, объективно мощной, высокоморальной, неподкупной, сошедшей с экранов старых советских фильмов. В Зоне такую не создашь. Разве что самим в «мусора» идти. Однако Опер понимал, что в таком случае из него получится именно «мусор». Но никак не милиционер.</p>
      <p>Нет, никакой огнестрельной мощи. Только навлечешь на себя неприятности.</p>
      <p>Впрочем, у «Набата» тоже кое-что водилось. Например, старенькое, перекрученное проволокой ружьишко Грача, висящее на стене у его матраса. Валера Дровосек таскал с собой «Вепрь» — ух, мощная штука этот вятско-полянский карабин! Конечно, ему не удалось пронести ствол в Зону через основной вход. Договорился Валера с кем-то со стены, и бац — передали ему его же собственный ствол с первым же караваном, причем сам Дровосек в этот раз даже не состоял в отряде, а чистил картошку на базе. При мысли о картошке Опер жадно сглотнул, представив вкус пюре на молоке, с селедочкой и стопкой добра.</p>
      <p>Сам Опер тоже был не лыком шит и носил на поясе травматик. Применял всего раз, еще до Зоны. Впрочем, именно из-за этого «всего раз» он в Зону и попал. Неприятная история вышла, и вспоминать о ней лишний раз не хотелось. И все же поговаривали, что такой пистоль в Зоне тоже может пользу принести. Саня Полох как приволок артефакт, так долго хвастался, что попросту выбил его из аномалии при помощи выстрела из травматика. Может, конечно, врал, но в этом смысла не было.</p>
      <p>Собственным оружием в «Набате» делились редко. Как, например, на время походов к военным. Караван без охраны не пускали, хотя еще ни разу не было нападения. Может, именно потому и не было. Только охранников назначали без системы, по желанию. Им и вручали оружие. Ведь кто такой охранник и чем он отличается от купца? Только тем, что ему не надо таскать тяжелый рюкзак. А в случае ахтунга защищаться придется всем на равных основаниях. Есть, конечно, еще психологический момент, фактор бодрости. Такой случается, если караван охраняют мужики, которым ты доверяешь. Но не в этот раз. Так кто такой, получается, охранник? Халявщик, только и всего. Сачкун. В этот раз ими стали вот Мивина и Самопал.</p>
      <p>Блин. Снова Самопал. Опер почувствовал, как его настроение начинает стремительно падать вниз. Чтобы отвлечься, он углубился в меню камеры, подстраивая время и дату. Неплохо бы разок запечатлеть для потомков, что и когда происходило. 11:47, 16 апреля. Тыча пальцами в сенсорный экран, Опер прокрутил следующие цифры до 2009. Теперь все верно.</p>
      <p>— Так, мужики, все посмотрели в камеру, — велел Опер.</p>
      <p>Тоже хороший человеческий фактор. Смотрят-то в камеру, а видят тебя. Соответственно, лица получаются такие, что сразу просекаешь, кто и как к тебе относится. Антоха похмурился немного, но в итоге таки заулыбался. Валера Дровосек сплюнул и положил «Вепрь» на плечо. Остальные приняли непринужденные позы. В общей сложности в кадр попали девять человек. Самопал не то что не повернулся, а даже не остановился, продолжая размеренно плестись вперед. Ну и хрен с ним.</p>
      <p>— Снимем для истории, — возвестил Опер. — Клан «Набат» за здоровую Зону! Ура!</p>
      <p>Указательный палец нажал на кнопку, добавив в память фотоснимок.</p>
      <p>Затем случилось что-то непонятное.</p>
      <p>Антоха резко запрокинул голову назад и свалился. На этот раз он действительно забрызгал Мивину грязью. И не только. Была еще и кровь. Дровосек перехватил карабин, отскочил в сторону, трижды выстрелил куда-то вдаль. От громкого звука Опер отшатнулся, цепляясь за камеру, будто она могла его удержать. Под ноги попался булыжник, нагруженный рюкзаком сталкер не удержался и потерял равновесие. Упав на землю, Опер лихорадочно пополз прочь, продолжая снимать одной рукой. Это был даже не рефлекс. Просто сквозь экран камеры было не так страшно смотреть. А не смотреть он не мог.</p>
      <p>Караван обстреливали с обеих сторон. Дыма было столько, что камера почти ничего не пробивала. Лишь смутные фигуры, дергающиеся, падающие…</p>
      <p>Это кино. Просто кино в формате аш-ди.</p>
      <p>Сталкер ощутил, как что-то обжигающее почти пропороло его череп. Мрак окутал сознание Опера, заставив его выронить технику. Он прижался щекой к холодному камню, стараясь просто уйти в бессознание. Может, ему и удалось бы это. Но его выдернули из небытия, сорвав рюкзак с плеч. Забавно. В его багаже не было артефактов, только образцы корней найденных в дебрях необычных растений. Вот так и сдохнешь за укроп.</p>
      <p>Долго лежать без сознания не пришлось. Издав стон, перешедший в кашель, Опер впился пальцами во что-то знакомое. Привычные очертания известного предмета сразу вернули его в реальный мир. Ну да, маленький штатив от камеры. Только кому понадобилось его откручивать и зачем?</p>
      <p>Дым все еще стоял плотной стеной, не рассеиваясь. Из него вышел человек в противогазе. Опер отпрянул, заслонился штативом, словно мог им что-то сделать.</p>
      <p>Человек стащил с себя противогаз и провел мокрой от крови рукой по лицу. Устало вздохнул.</p>
      <p>Голова Опера заныла тупой болью. Только сейчас он начал чувствовать страх.</p>
      <p>— Вот и все, — сказал Самопал, убирая налипшие на лоб волосы. — Сказка кончилась.</p>
      <p>— Не надо, — прохрипел Опер, перебирая ногами в грязи, стараясь оттолкнуться, отодвинуться подальше. — Не убивай…</p>
      <p>— Ты так ничего и не понял, — тяжело произнес Самопал. — Дурак ты, Опер. Безмозглый дурак, только и всего.</p>
      <p>Сталкер почувствовал, как ему в руки суют его же камеру. От этого сталкер пришел в себя.</p>
      <p>— Ты останешься в живых, — успокоил Самопал, глядя в глаза. — Вернись к своим и передай им запись. Скажи им, что мы их найдем. Всех до единого. И перережем.</p>
      <p>Опер прикрыл глаза от накатившей слабости. Ему было настолько плохо, что в тот момент Опер намеревался наплевать и на караван, и на клан — лишь бы пережить эту бойню, отлежаться, обдумать, что только что произошло. Однако он все же нашел в себе силы выдавить:</p>
      <p>— Кто это «мы»?</p>
      <p>Самопал остановился, чуть повернул голову, подумал.</p>
      <p>— «Лезвия», — ответил он. — Так и передай всем. «Набат» будет уничтожен «Лезвиями».</p>
      <p>Опер даже не осознал, о каких лезвиях идет речь. Будь он в полном порядке, то поморщил бы лоб и вспомнил, что о подобной группировке не слышал ровным счетом ничего. В своем же теперешнем состоянии он не понял, что вообще означает это слово. Помнил лишь, что что-то плохое и грозное.</p>
      <p>Прижимая к себе камеру, как лучшего друга, Опер кое-как встал на ноги и побрел прочь.</p>
      <p>Тела товарищей остались лежать на местах в ожидании новых стервятников.</p>
    </section>
    <section>
      <title>
        <p>Глава 2</p>
        <p>Камень</p>
      </title>
      <p>Полдень. Самое время для охоты.</p>
      <p>Маркус затаился за широким корнем дерева, высматривая добычу. Он был наготове — предельно собран, сконцентрирован, готов к применению силы. В животе бурчало от голода, словно сама природа напоминала ему, что пора оторваться на миг от остальных забот и вспомнить о насущных потребностях. В данный момент Маркус ни о чем другом не думал. Зоркими глазами он следил за еле видимой норой, из которой высовывался чуть шевелящийся хвост крысы.</p>
      <p>До Зоны Маркус и не подумал бы опускаться до такой пищи. Даже в «Набате» никто не едал ничего похуже ворон, в которых Маркус находил особый шарм. Разумеется, никакой романтики Зоны он не признавал. Просто он быстро учился и еще быстрее привыкал.</p>
      <p>Если в клане жизнь была хотя бы предсказуемая — распорядок дня, постоянство, — то за его пределами приходилось подстраиваться под ситуацию на лету. В ранние месяцы Маркус скорее бы перетерпел, подождал день или два в надежде, что подвернется что-то посъедобнее. Однако довольно скоро ему пришлось сидеть не то что впроголодь, но и в полном одиночестве, что на его памяти давно не случалось. На четвертый день он, переборов гордость, пошел охотиться на тушканов. Поймал одного и тут же, не отходя от кассы, съел. Ничего, оказалось вполне нормально. Второго тушкана Маркус принес на базу, но сталкеры побрезговали. Видать, не доросли еще. Зато самого Маркуса встретили с радушным одобрением. Все же кое-какой авторитет у него имелся. Заслуженный — недаром он аномалии чувствовал лучше всякого детектора. В клане Маркус был кем-то вроде ходячего талисмана. И место на теплом камне у костра и миску похлебки он имел во многом благодаря своим природным способностям.</p>
      <p>Но сейчас ему были нужны способности совсем другие, более приземленные, для вполне прозаических целей.</p>
      <p>Преодолеть голод.</p>
      <p>Перетерпеть ожидание.</p>
      <p>Маркус прижался боком к дереву, позволив себе оглядеться. Какой-то шорох. Нет, не кабаны. Просто ветка упала. В окружающих звуках Маркус разбирался очень хорошо.</p>
      <p>Напрягая зрение, добытчик обратил весь слух на восприятие окружающего мира. Тяжело одному, как ни крути. Шептун куда-то запропастился. Верный друг и товарищ Шептун. Никогда не предаст и не обманет. Маркус пришел с ним в Зону и только с ним же ходил в рейды. Он верил в доброжелательность, однако доверял в полной мере только Шептуну. Сейчас его напарник шел выслеживать новичка, который, как показывали следы на траве, долго петлял в районе и затем ушел на запад. Там выжить было проблематично, так что Шептун пошел его выручать. Уж такой он был человек — специалист по связям с общественностью.</p>
      <p>Хвост задвигался активнее, и Маркус приготовился к атаке.</p>
      <p>Внезапно нору накрыла большая тень. Крыса пискнула и скрылась в ближайших кустах, слегка взбив мелкие соринки в кучу. Маркус прыгнул вперед, стараясь не производить много шума. Поздно. Добыча ускользнула.</p>
      <p>Тень отодвинулась, Маркус уставился на ее обладателя. Поодаль, опираясь на посох, стоял молодой парень в местами прорванном спортивном костюме. За плечами у него виднелся вещмешок, из-за поясницы высовывались края походной палатки.</p>
      <p>— Ничего себе, — сказал парень, изумленно глядя на Маркуса. — Ты как сюда попал?</p>
      <p>Тон говорившего был вполне миролюбивым. Маркус осторожно подошел к нему.</p>
      <p>— Иди, иди сюда, красавец. — Турист протянул ему руку, позволив потереться о ладонь. Маркус заурчал в знак приветствия.</p>
      <p>— Да ты совсем ручной, — произнес парень, гладя смельчака по мохнатой шее. — Это что у тебя, ошейник? Ну-ка, что там написано?</p>
      <p>— Там написано «Клан „Набат“ за здоровую Зону», — прозвучал голос со стороны.</p>
      <p>Турист встал, держась за посох, повернулся. Возле дерева стоял хмурый сталкер. Именно сталкер — по нему было видно. Небольшие самодельные сумки для артефактов, колбы для сбора образцов воздуха, брезентовый плащ. Особая манера стоять и говорить.</p>
      <p>— Я безоружен, — сказал турист.</p>
      <p>— И я тоже, — ответил сталкер. — Маркусу ты, похоже, понравился.</p>
      <p>— Это твой?</p>
      <p>— Мой.</p>
      <p>Маркус переводил взгляд с одного человека на другого. Сев в кучу мокрой травы, он принялся энергично чесать ухо задней лапой.</p>
      <p>— Ты друг? — спросил человек с посохом.</p>
      <p>— Надеюсь на это.</p>
      <p>— Ну да, — закивал турист. — Ты ведь из «Набата». Раз твой кот оттуда, то и ты тоже.</p>
      <p>— Верно. — Сталкер подошел ближе и протянул руку. — Я Шептун.</p>
      <p>— А меня зовут Григорием, — ответил турист. — Но, раз у вас имена не в ходу, можешь называть меня Гиббоном.</p>
      <p>— Приветствую в Зоне, Гиббон, — сказал Шептун без тени улыбки. Он и не думал шутить над чужими кличками. Теперь это было всего лишь имя его нового знакомого и не более того. Без ассоциаций, без аналогий. — Я долго тебя выслеживал.</p>
      <p>— Знаю, — ответил турист. — Считай это взаимной проверкой.</p>
      <p>— Стало быть, поговорим?</p>
      <p>— Поговорим, — согласился Гиббон. Слегка усмехнувшись, он добавил: — Разумеется, поговорим. Мне очень интересен человек, который решил притащить в Зону кота.</p>
      <subtitle>* * *</subtitle>
      <p>Маркус трусцой бежал впереди хозяина. Раз Шептун объявился, то они идут домой. А там и поесть дадут. Больше его ничто не волновало.</p>
      <p>— Значит, «Набат», — повторил Гиббон. — Слышал я про вас.</p>
      <p>— Все слышали.</p>
      <p>— Но не все говорят одно и то же.</p>
      <p>— Иначе никогда и не бывает.</p>
      <p>Гиббон замолчал. Шептун ожидал новой порции банальных, ничего не значащих фраз. И внутренне перевел дух, когда ведомый заговорил о другом:</p>
      <p>— А здесь и впрямь опаснее, чем считают в деревнях.</p>
      <p>— Неужели? — Шептун внимательно проследил, как Маркус сходит со знакомой тропы, чтобы сделать крюк метров на пять, и прошел точно по его маршруту. — Обычно сплетники все преувеличивают.</p>
      <p>— В этот раз недооценивают. Может, в деревнях сидят подставные.</p>
      <p>— В смысле?</p>
      <p>— Агитировать новичков двигаться в Зону.</p>
      <p>— Думаешь? — усомнился Шептун. — Здесь вовсе не приветствуют гражданских. Ты должен был заметить, если прожил здесь хотя бы пару дней.</p>
      <p>— Я здесь меньше одного, — пояснил Гиббон. — Меня перевели через забор сегодня ночью.</p>
      <p>Шептун такого не ожидал.</p>
      <p>— Ты производишь впечатление человека знающего, — признался он. — По крайней мере о «Набате» слышал. А это значит, что ты по меньшей мере не просто встретил здесь какого-нибудь одиночку, но и говорил с ним. Да еще так, что он поделился с тобой своим мнением о клане. «Набат» — не та тема для разговора, которой делятся с первым встречным. Так что у тебя была возможность поговорить с кем-то по душам, серьезно поговорить. Оружия у тебя и впрямь нет — стало быть, ты не мародер. Палатка потрепанная, но хорошая, плотная. Значит, тебя не грабили. Для новичка в Зоне ты провел очень счастливый день, Гиббон. День насыщенный и в то же время спокойный.</p>
      <p>Гиббон слушал сталкера, не перебивая.</p>
      <p>— Значит, мы оба счастливцы. — Он пощупал посохом землю перед собой и только тогда решился ступить на нее. — Ты здесь намного дольше, чем я, это сразу видно. Но все же не бьешь ножом в спину, зато с легкостью подставляешь свою, соглашаясь идти первым. И все лишь потому, что я погладил твоего кота. Неужели в Зоне этого хватает, чтобы различать черное и белое?</p>
      <p>— Маркус более значим, чем кажется. — Шептун внимательно смотрел, как кот осторожно трогает лапой стебель, раздваивающийся у середины. — Ты заметил, что я иду точно по его следу? Не всегда по прямой.</p>
      <p>— Заметил. Кот ощущает аномалии?</p>
      <p>— Верно. — Шептун подбросил на ладони болт с привязанной к нему ленточкой. — Маркус чувствует аномалии лучше, чем любой военный детектор. Мы ими, кстати, не пользуемся.</p>
      <p>— «Мы» — это ты и кот?</p>
      <p>— Нет. Я про наш клан. «Наш» — это меня и кота.</p>
      <p>— Ясно. — Гиббон оперся о посох обеими руками и прищурился. — У тебя есть практические основания доверять Маркусу?</p>
      <p>— Есть. Он пока ни разу не ошибался. А вот мне приходилось.</p>
      <p>Маркус перестал возиться со стеблем и, наступив на него, не торопясь пошел дальше.</p>
      <p>— И что, Маркуса хватает на всех? — спросил Гиббон, спускаясь по холму вслед за Шептуном. — Или у каждого «набатовца» по коту?</p>
      <p>— Мы пользуемся болтами, — ответил Шептун. — Знаешь, как это работает?</p>
      <p>— Знаю. Не знаю только почему.</p>
      <p>— Да какая разница? Тут же дело не в болтах.</p>
      <p>— В этом у меня и сомнений не было.</p>
      <p>Внизу холма виднелся своеобразный круг из камней, наваленных вручную. Но было это очень давно, о чем свидетельствовала густая поросль вокруг них. Полное ее отсутствие внутри круга, в центре которого было широкое кострище, говорило о том, что этим местом пользовались для перекуров.</p>
      <p>— Здесь безопасно? — спросил Гиббон.</p>
      <p>— Относительно. Видишь, на камне мелом нарисованы палочки? Это количество случаев, когда здесь удалось безопасно посидеть.</p>
      <p>— Я насчитал всего пять палочек.</p>
      <p>— А разве этого мало? Целых пять раз тут кто-то отдыхал. И спокойно уходил, без приключений.</p>
      <p>Гиббон внимательно оглядел камни.</p>
      <p>— Значит, отдыхать в Зоне можно только в специально отведенных местах? — спросил он.</p>
      <p>— Конечно. Иначе быстро погибнешь.</p>
      <p>— От чего?</p>
      <p>— Да кто же знает?</p>
      <p>Гиббон молча смотрел на Шептуна.</p>
      <p>— Давай здесь отдохнем, — предложил Шептун. — Я уже много часов на ногах.</p>
      <p>— Не возражаю. — Гиббон отложил посох, снял с себя вещмешок и палатку. Провел рукой по камню, дунул на него и только тогда сел, вытянув ноги. — Если бы я прошагал в этом месте половину дня и ничего не нашел, я бы устал куда сильнее.</p>
      <p>— Как ты узнал, что я ничего не нашел? — Шептун позволил Маркусу запрыгнуть ему на колени.</p>
      <p>— По твоему рюкзаку. Он слишком тощий, чтобы в нем могло находиться что-то важное. Контейнеры для артефактов тоже пусты.</p>
      <p>— Гиббон, далеко не всегда в Зоне ищут что-то материальное.</p>
      <p>Турист развязал горловину мешка, вытащил банку тушенки. Раскрыл перочинный нож.</p>
      <p>— Разведем костер? — предложил он.</p>
      <p>— Нет, — мотнул головой Шептун. — Можем привлечь внимание бродяг. База скоро, там все будет.</p>
      <p>— Ну хорошо. — Гиббон вскрыл банку и принялся есть. Судя по аппетиту, он впервые ел в Зоне.</p>
      <p>— Говорю же, база недалеко. Там бы и поели.</p>
      <p>— Я еще не решил, хочу ли на вашу базу. Шептун отвернулся.</p>
      <p>— Ладно, — согласился он. — Я расскажу тебе о клане.</p>
      <p>— Ты не обязан.</p>
      <p>— Обязан. Должен же я обрести до конца то, за чем сегодня гнался.</p>
      <p>Кот, словно почувствовав, что ему пора прогуляться, спрыгнул на камень и потянулся.</p>
      <p>— Но прежде чем я начну, — сказал Шептун, — расскажи мне, что слышал о нас.</p>
      <p>— Это можно, — согласился Гиббон. — Три года назад в районе Чернобыльской АЭС прогремел мощный взрыв. Так появилась Зона. Центр оказался накрыт непроницаемым куполом, а за его пределами начала твориться всякая чертовщина.</p>
      <p>Шептун покивал, услышав такое определение.</p>
      <p>— Военный отряд, посланный на разведку, погиб. — Гиббон отправил в рот очередной кусок тушенки. — И, как это обычно случается, место наводнили гражданские. В основном — религиозные фанатики, правительственные шпионы и откровенно больные люди.</p>
      <p>— Про шпионов нам вряд ли кто расскажет.</p>
      <p>— Про все остальное тоже, но мы ведь это знаем? Дальше, в Зону начали поступать уже люди относительно здравомыслящие. Как поговаривают, это потому, что у военных появилась потребность в добровольцах, готовых лезть в самое пекло. А пекла хватало, так как Зону удалось худо-бедно изучить. По крайней мере поняли, что тут наблюдается смещение физических законов.</p>
      <p>— И местами — биологических.</p>
      <p>— Да. Помимо аномальных участков Зона рождала предметы, меняющие природу материи вокруг. И первыми объектами применения артефактов стали сами сталкеры. Люди, которые эти предметы добывали.</p>
      <p>— Военные нас не трогают, пока мы приносим артефакты им. Взамен нам дают ресурсы для жизни. — И в последнее время в их число вошло огнестрельное оружие.</p>
      <p>Шептун промолчал. Гиббон пошевелил палкой в куче золы.</p>
      <p>— Сталкеры начали гибнуть от рук конкурентов, — сказал он. — Так продолжалось, пока некоторые из них не решили организовать собственную общину. Никто не знает, кто первый предложил такой способ выживания. Но это сработало.</p>
      <p>— Это правда. Впрочем, идея была коллективной. Объединяться перед лицом опасности естественно для людей.</p>
      <p>— Так появился «Набат». Клан с почти пещерным образом жизни по меркам нашего времени. И с этой поры стало чуть легче.</p>
      <p>— Что еще известно про нас?</p>
      <p>— Немного. Клан имел важное социальное значение, хотя бы из-за того, что теперь в Зону стали не просто проникать снаружи, но и постоянно жить в ней. «Набат» не принимает к себе всякое отребье, к которому приравниваются все ненадежные люди. Для вас слабость лучше, чем сила, направленная в минус. Но в случае опасности вы можете дать отпор. С вами считаются и стараются не трогать. На ваши караваны никогда не нападают. Вы придерживаетесь принципов равенства и братства. Чтобы вступить в ваши ряды, достаточно знать вашу историю и погладить кота.</p>
      <p>Шептун рассмеялся.</p>
      <p>— Насчет последнего пункта я бы поспорил, — сказал он. — Окончательное решение принимает Грач. Но ты ему понравишься, Гиббон. Таких, как ты, здесь мало.</p>
      <p>— А как ты?</p>
      <p>— Полным-полно.</p>
      <p>— Почему ты так уверен, что я понравлюсь Грачу?</p>
      <p>— Я знаю его предпочтения в людях. Ты красноречив, причем всегда точно по делу. Это очень хорошее качество. Быть может, в Зоне главное — это выхватить нож первым. Но в «Набате» прежде всего ценится умение держать под контролем свои мысли и слова.</p>
      <p>— Красноречие — сплошной обман, — произнес Гиббон. — Оно создает больше проблем, чем помогает разрешить. Так же, как и грубая сила. Они считаются противоположностями друг друга, но всегда идут рядом. Ведь на наибольшее насилие способны только те, кто привык жечь глаголом, но исчерпал запас красивых и убедительных слов. И наоборот. Кто не видит иного способа решить свои дела, кроме как размахивать мечом направо и налево, тот рано или поздно оказывается загнанным в угол более сильным противником. И вот тогда, и только тогда, рождается настоящее красноречие.</p>
      <p>Шептун протянул туристу руку, и тот пожал ее.</p>
      <p>— Рад с тобой встретиться, — сказал Шептун. — Давай я зарою твою банку.</p>
      <p>— Зачем? — поднял брови Гиббон. — Я сам где-нибудь выброшу.</p>
      <p>— Это традиция. Просто на счастье. А с тобой побудет Маркус.</p>
      <p>Кот моргнул, услышав свое имя.</p>
      <p>— Годится, — сказал Гиббон. — Обещаю, с ним ничего не случится.</p>
      <p>Шептун отошел в чашу. Быстро прокопав маленькую яму саперной лопаткой, он положил банку в нее и присыпал землей. Выпрямился, посмотрел на солнце, находящееся почти в зените. Несмотря на климатический пояс, зенит в Зоне иногда случался. Что-то в атмосфере преломляло лучи. Может, оттого здесь и стоит почти вечная осень.</p>
      <p>Вдалеке блестел купол Заслона. Огромный сероватый щит, закрывающий центр, всегда блестел в полдень. Вызывающе искрился, привлекал внимание. Казалось, стоит протянуть руку, и она наткнется на мягкую, упругую материю, деликатно отталкивающую любого гостя. Одной Зоне было известно, что находилось под этим волшебным панцирем, который не брали никакие пушки.</p>
      <p>— Какие же тайны ты скрываешь? — пробормотал сталкер.</p>
      <p>Истошный визг прервал его размышления. Шептуна словно облили кипятком с головы до ног, с такой скоростью он подскочил на месте и повернулся. Он и не подозревал, что Маркус способен на такие звуки.</p>
      <p>Прорываясь сквозь хлеставшие по лицу ветки, Шептун несся к скопищу камней. Рюкзак остался там, вместе с ножом в притороченных к лямке ножнах. Почти не сбавляя темпа, Шептун схватил с земли два камня — один для броска и второй для удара. Он не рисовал перед собою никаких образов поджидавшей его опасности. Знал, насколько губительны такие догадки. Нужно было импровизировать.</p>
      <p>Выскочив на поляну, Шептун остановился. Продолжая сжимать камни в руках, расцарапав пальцы до крови, сталкер смотрел на место для привала, чувствуя, как на него наваливается ненавистная ему растерянность.</p>
      <p>Гиббона не было. На камнях продолжали лежать его вещи — вещмешок, палатка. Тут же, в раскрытом состоянии, лежал перочинный нож. Все оставалось в том виде, в котором было пять минут назад.</p>
      <p>Не считая того, что повсюду была кровь.</p>
      <p>Кровь покрывала валуны, бурыми пятнами въедалась в землю. Ее брызги разлетались по всей площади каменного круга, но отсутствовали за его пределами. Словно что-то с огромной силой ударило сверху, строго вертикально, не тронув ничего, кроме человека.</p>
      <p>Маркус, взъерошенный до невозможности, сидел на самом верхнем камне, поджав лапы и уши. Его глаза были полны ужаса, словно кот побывал в преисподней и по ошибке вышел из нее вниз, попав на новый уровень ада.</p>
      <p>— Что здесь случилось? — спросил Шептун и сразу почувствовал себя глупо. Никто ему ответить не мог, и к тому же он не хотел бы получить ответ. Кто или что забрало Гиббона, как это произошло так быстро и бесшумно — знал один лишь Маркус.</p>
      <p>Превозмогая тошноту, Шептун подобрался к коту поближе и снял его с камня. Дрожащий зверек тут же спрятал мордочку в складках его одежды.</p>
      <p>— Как же так, Гиббон? — проговорил Шептун, ища глазами свой рюкзак. Тот был весь в крови.</p>
      <p>Кое-как очистив его, сталкер со сжатыми губами вытащил кусочек мела. Маркус, уже находившийся в специально сшитом для него тряпичном мешочке, висящем на плече Шептуна, начал негромко завывать.</p>
      <p>— Сейчас, малыш, сейчас, — сказал Шептун. — Осталось сделать самую малость.</p>
      <p>Надев рюкзак на спину, сталкер обошел круг и подошел к нужному камню. Ему понадобилось время, чтобы найти ряд из пяти нарисованных палочек. Потерев их пригоршней сырой земли, сталкер мелом вывел рядом с палочками ясно заметный крест.</p>
      <p>— Вот теперь все, — бормотал он. — Теперь все честно.</p>
      <p>Маркус завыл громче. Шептун быстрым шагом пошел прочь от места трагедии, не оглядываясь. Он слишком хорошо знал, что кровяные пятна в Зоне быстро исчезают, и не хотел снова становиться свидетелем этого процесса.</p>
    </section>
  </body>
  <binary id="cover.jpg" content-type="image/jpeg">/9j/4QAYRXhp
S7iEixo0QYNR5FALLSlfoRoMqj8kRwWcupVn25i5rZHyNyXjVvUqv6GoPEj66JXXFyZZQruT
IHyRTU9piHRxagtOjArHyCgqp/VoNkI/2jJRoWTfzYDKVPH3M8MaWltOtqxo9shqhY9W67fj
oUeNYR
3I6NuvRVJHFab+Olb5yphkMOnh/VM1ViyTxYyy/iheLtu9u1+5USySRrgVkjjgq4liQFyVC9
QFBJ0zI1XwycfklYGyiei2DsP5W7c7tx8Vnkj9tk1X+ncrQyL0ordOS7/iNeT9w9nnQTKvQ9
On+q9N7Z0....</binary>
</FictionBook>
Хочу сделать программку для чтения( удобного чтения, самое главное). Примерно как в Coolreader ну или хотя бы похоже. Пытался сделать через имя тега -
C#
1
2
3
4
5
6
7
8
9
10
   XmlDocument xdoc = new XmlDocument();
            xdoc.Load(@"....Priznaki_zhizni.fb2");
 
            XmlNodeList kniga = xdoc.GetElementsByTagName("p");
           string body = "";
            foreach (XmlNode ii4 in kniga)
            {
                body += "          " + ii4.InnerText + "\n";
            }
            richTextBox1.Text = body;
Но получается уж больно кривовато. И нет форматирования, а если вручную форматировать в ричьтекстбоксе, так это и свихнуться можно + не все теги учитываются при извлечении.
Может кто-то подсказать как это сделать красиво или подробный пример кинуть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2014, 15:08
Ответы с готовыми решениями:

xml парсинг
пишу рсс-ридер, и пытаюсь как-нить разобрать пришедший рсс файл. в следующем...

Парсинг XML
Допустим есть следующая XMLNodeCollection (по сути List&lt;XmlElement&gt;): &lt;cat...

Парсинг xml
Всем привет, подскажите пожалуйста как спарсить следующий фрагменты xml файла ...

Парсинг xml структуры
Всем привет, Народ, ткните в ошибку, что делаю не так. есть структура: ...

Парсинг Xml и запись в файл
Здравствуйте, суть проблемы в следующем: мне необходимо пройти по всем полям...

30
insite2012
Модератор
Эксперт .NET
4851 / 3806 / 1094
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
02.06.2014, 21:15 2
-gwinblade, не большой спец (пока) по Xml, но могу предположить, что LINQ to Xml может вам помочь.
1
k0z@k
39 / 39 / 19
Регистрация: 30.11.2011
Сообщений: 112
02.06.2014, 21:35 3
На вашем месте я бы не шёл с тэга p, а с тэга body. Для тэга body проходитесь по нодам, и дальше действуете в завимости от найденного нода:
1.Если текущий нод - title, то пройтись по всём ему дочерним нодам и вывести их value посередине в richtextbox
2.Если текущий нод - section, то пройтись по его дочерним нодам и, если это title, то делаем шаг 1, вы иных случаях просто выводим с новой строки value дочернего нода в richtextbox.
1
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
02.06.2014, 23:45  [ТС] 4
Что-то я поискал, но решение с форматированием не нашел. Хотя возможно просто плохо искал.

Добавлено через 1 час 46 минут

Добавлено через 5 минут
Приму к сведению, спасибо. А вот что делать с другими тегами? Ведь код получается не универсален. В xml одной книги есть тег <Data>(за пределами body), в другом нет и т.д.
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
02.06.2014, 23:56 5
Если не работать в рамках ограниченного количества памяти, как на телефонах (хотя нынче телефоны мощнее компьютеров у некоторых), то ничто не мешает создать объект под это дело и десереализовать, а там уж творите, что хотите. В противном случае, потоковое чтение и ручной разбор тэгов, так как вариант с XmlDocument всё в память вбирает.
0
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
03.06.2014, 10:17  [ТС] 6
Я не настолько крут пока что в c# чтобы понять ваш комментарий. Мне бы что нибудь полегче
0
zelen
382 / 297 / 67
Регистрация: 10.07.2010
Сообщений: 794
Завершенные тесты: 3
03.06.2014, 10:29 7
Spawn, книги всего пару мб занимают, сейчас не актуально экономить в таких размерах учитывая то что это прикладная задача, а не задача на производстве с программированием каких нибудь контроллеров. Да и что бы создать объект и десериализовать его нужно как раз таки вытащить все значения в память, или я вас не понял?

Добавлено через 5 минут
Вообще на счет XML для парсинга еще удобно использовать XPath, для универсализации изучите хорошо документацию по формату, только в этом случае вы сможете сделать по настоящему универсальное приложение. Ну а еще в WPF есть компонент http://msdn.microsoft.com/ru-ru/magazine/cc163371.aspx. Я честно говоря им не пользовался и не знаю особо его возможностей но возможно сможет помочь с форматированием, типа выделения жирным шрифтом и пр.
0
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
03.06.2014, 10:43  [ТС] 8
zelen, тут дело не в универсальном приложении, а в том, чтобы открыть просто правильно книгу. Но за помощь спасибо.
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 11:15 9
И так, с примером. Взял я Ваш XML и скормил его Visual Studio, которая умеет генерировать XSD-схему на основе. Что это и зачем крайне рекомендую ознакомиться.
Далее с помощью утилиты xsd.exe, которая идёт с .NET Framework, генерируем готовые классы.

Добавляем в проект sample.cs.

Нам остаётся только десериализовать xml, т.е. превратить весь этот текст в объекты. Схема послужила "мостом" в этом.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Xml;
using System.Xml.Serialization;
 
namespace SampleNamespace
{
    class Sample
    {
        internal void Start()
        {
            FictionBook book = new XmlSerializer(typeof(FictionBook)).Deserialize(XmlReader.Create("c:\\book.xml")) as FictionBook;
            foreach (var section in book.body.section)
            {
                foreach (var par in section.Items)
                {
                    
                }
            }
 
            string author = book.description.titleinfo.author.firstname; // Сергей
        }
    }
}
Как видим, 1 строчка на десериализацию, а затем уже работаем с нашей "книгой" как с объектом.
0
Вложения
Тип файла: zip sample.zip (3.1 Кб, 10 просмотров)
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
03.06.2014, 13:30  [ТС] 10
Spawn, Почитал что такое схема. пытался поработать с вашим кодом, некоторые вещи выводит, некоторые нет. Пытался вывести body
C#
1
  string author = book.body.title;
Пишет преобразование стринг в стринг невозможно. В чем ошибка, я так и не понял. Я пытался вытащить объекты еще вот так...
C#
1
2
3
4
5
6
7
8
9
var el = new XmlDocument();
            el.Load(FB2FileName);
            string str = el.InnerXml;
            string search = "FictionBook xmlns";
            el.InnerXml = el.InnerXml.Insert(str.IndexOf(search) + search.Length, ":xhtml");
            XmlNodeList nl0 = el.SelectNodes("//FictionBook/body/title/p/text()");
            XmlNodeList nl01 = el.SelectNodes("//FictionBook/body/section/title/p/text()");
            XmlNodeList nl1 = el.SelectNodes("//FictionBook/body/section/p/text()");
            XmlNodeList nl2 = el.SelectNodes("//FictionBook/description/title-info/annotation/p/text()");
Но у меня возникла проблема в том, что не все теги учитываются и я не смог вытащить грамотно body. Т.е надо в section выводить title. Т.е глава 1 и текст главы и т.д. Пытался цикл в цикле. Чтобы при нахождении первой секции выводилась глава и текст, но все зависало.
P.S. Код снова же не универсален. Вводил другую книгу, пишет ошибку "В документе XML (147, 318) присутствует ошибка."
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 13:36 11
-gwinblade, я схему генерировал с Вашей XML, логично, что она не всё учитывает. Вот тут официальная схема, должна любую (созданную по схеме) книжку скушать.
Цитата Сообщение от -gwinblade Посмотреть сообщение
Пытался вывести body
Там не строка.
0
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
03.06.2014, 14:04  [ТС] 12
Spawn, т.е на вывод надо прогнать все теги и все? Если не сложно, не подскажете как определить тип тега? Если body не строка, чем он является? В принципе там же текст, т.е стринг, или я ошибаюсь? И как правильно схему прикрепить? Буду очень благодарен если поможете.
0
WhiteMaster
C#,XNA Game Studio
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
03.06.2014, 14:19 13
я бы не советовал десериализации, с ними столько возьни, как сделал бы я..
C#
1
2
3
4
5
6
7
8
9
using System.Xml;
using System.Xml.XPath;
using System.Xml.Linq;
 
        XDocument doc = XDocument.Load(XMLname);
            List<XElement> ListXel = doc.Root.XPathSelectElements("//p").ToList();
          string smas = "";
            foreach(XElement el in ListXel)
         smas=+"\n"+el.Value;
0
-gwinblade
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 40
03.06.2014, 14:40  [ТС] 14
WhiteMaster, на вывод пусто. Не правильно указан путь к тегам видимо.
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 14:41 15
Так, собрал официальную схему в класс. В примере показано как типы проверять.
В Вашей книге, кстати, написал жанр, которого нет в схеме, уж не знаю почему.
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
36
37
38
39
40
41
42
            FictionBook book = new XmlSerializer(typeof(FictionBook)).Deserialize(XmlReader.Create("c:\\book.xml")) as FictionBook;
            // по схеме может быть не одно body
            // соответственно book.body - массив
            foreach (var body in book.body)
            {
                // секции
                foreach (var section in body.section)
                {
                    // элементы внутри секции
                    // они могут быть различных типов
                    // pType
                    // poemType
                    // imageType
                    // и т.д.
                    for (int i = 0; i < section.ItemsElementName.Length; i++)
                    {
                        switch (section.ItemsElementName[i])
                        {
                            // параграф
                            case ItemsChoiceType5.p:
                                pType p = section.Items[i] as pType;
                                
                                break;
                        }
                    }
                }
            }
 
            foreach (FictionBookDescriptionTitleinfoAuthor author in book.description.titleinfo.author)
            {
                for (int i = 0; i < author.ItemsElementName.Length; i++)
                {
                    switch (author.ItemsElementName[i])
                    {
                        // Имя
                        case ItemsChoiceType.firstname:
                            textFieldType firstName = author.Items[i] as textFieldType;
 
                            break;
                    }
                }
            }
Прикрепил на всякий пожарный и изменённую слегка book.xml, дабы пример сработал.
1
Вложения
Тип файла: rar FictionBook.rar (5.9 Кб, 5 просмотров)
Тип файла: rar book.rar (18.2 Кб, 4 просмотров)
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 14:44 16
WhiteMaster, я посмотрю как Вы потом всю программу перепишите, в случае малейшего изменения в схеме.

Добавлено через 2 минуты
Сериализация/десериализация полностью себя оправдывают, если есть возможность загрузить всю XML в память, также для связки с интерфейсом Вы всё равно напишите обёртку
0
WhiteMaster
C#,XNA Game Studio
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
03.06.2014, 14:49 17
-gwinblade,
C#
1
 List<XElement> ListXel = doc.Root.XPathSelectElements(".//p").ToList();
может так покатит
Spawn, зачем же всю данный способ универсален на мой взгляд,но из за своей простоты не учитывает ньюансы,но ведь и схемы не всегда хорошо работают
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 14:52 18
Цитата Сообщение от WhiteMaster Посмотреть сообщение
но ведь и схемы не всегда хорошо работают
Это плохие схемы

Не по теме:

Windows тоже синий экран показывает :)


Цитата Сообщение от WhiteMaster Посмотреть сообщение
но из за своей простоты не учитывает ньюансы
А в случае с XDocument нюансом будет необходимость ручками для всего обёртки писать
0
WhiteMaster
C#,XNA Game Studio
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
03.06.2014, 14:55 19
Spawn, производительность (де)сериализаций будет конечно выше, но зато во время написания обертки можно дополнительно отфильтровать данные, чтобы не возникло исключений, в каком то смысле способ более надежный и универсальный уж точно)
0
Spawn
971 / 869 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 14:58 20
Цитата Сообщение от WhiteMaster Посмотреть сообщение
чтобы не возникло исключений
кхм, каких исключений?) Не прошёл по схеме - до свидания Политика проста. Если хочется всё-таки загрузить что-то эдакое, XSLT можно взять и подправить

Не по теме:

Ну да ладно, для каждого случая свои средства хороши :) Победила дружба.

0
03.06.2014, 14:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 14:58

Парсинг многострочных значений XML
Имеем такой док &lt;root&gt; &lt;tab&gt; Line1 Line2 Line3 Line4...

Парсинг XML и вывод на консоль
Приветствую.Проблема такова:есть xml-файл.Надо вывести все его &quot;чистое&quot;...

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


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

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

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