Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Восстановитель xml файлов


Автор: Elfa 5.3.2011, 14:36
Здравствуйте! Передо мной поставили задачу: восстановить с помощью C# xml-файл. То есть если в файле пропущен тег, то ставить его там, где нужно (например есть открывающий, но нет закрывающего). Есть ли возможность реализовать данную задачу? 
Xml файл простой:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<log>
<protocol version='1.0.0'/>
<content>
<message type= "info" date= "28.02.2011 21:57:57">
<module> ... </module>
<body> ... </body>
</message>
<message type= "error" date= "28.02.2011 21:57:57">
<module> ... </module>
<body> ... </body>
</message>
</content>
</log>

Автор: gambit 5.3.2011, 18:07
Возможно - да
Как - очень геморойно, но решаемо.
Но на этапе разработки по любому возникнет вопрос, а так ли мне нужен этот xml, что бы так раком с бубном прыгать вокруг студии.

Автор: jonie 5.3.2011, 20:08
http://tidyfornet.sourceforge.net/
враппер над HTML Tidy

Автор: diadiavova 5.3.2011, 20:33
Цитата(Elfa @  5.3.2011,  14:36 Найти цитируемый пост)
 то ставить его там, где нужно

А как определить где нужно?
Цитата(Elfa @  5.3.2011,  14:36 Найти цитируемый пост)
(например есть открывающий, но нет закрывающего).

Такая задача разрешима только в очень частных случаях. Взять к примеру HTML, синтаксис очень похож на хмловский, но там для некоторых элементов закрывающий тег необязателен и парсеры все понимают правильно. Но...во-первых там такие вольности допускаются только для нескольких конкретных элементов, а во-вторых, спецификация довольно точно описывает как определить, где заканчивается тот или иной элемент в случае отсутствия закрывающего тега. Решить такую задачу для общего случая хмл-документа не получится, в силу того, что неизвестно по каким признакам следует определять где заканчивается элемент.

Автор: Elfa 6.3.2011, 06:22
Спасибо большое за ответы  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)