Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка при сохранении XML XDocument в файл / 7 сообщений из 7, страница 1 из 1
12.08.2010, 09:22
    #36787470
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
Сохраняю данные из DataTable в XML файл следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DataTable MntrTmpltDT = new DataTable();

... заполняю DataTable ...        
    
XDocument doc = new XDocument(
                                new XDeclaration("1.0", "utf-8", "yes"),
                                new XElement("root")
                              );

DataRow[] allRows = MntrTmpltDT.Select();

foreach (DataRow dr in allRows)
{
       XElement newRow = new XElement("row",
                                                new XElement("id_mntr", new XCData(dr["id_mntr"].ToString())),
                                                new XElement("nomk_ls", new XCData(dr["nomk_ls"].ToString())),
                                                new XElement("name_med", new XCData(dr["name_med"].ToString()))
                                              );
       doc.Root.Add(newRow);
}

doc.Save(@"../test.xml");

Выходит ошибка:

'', hexadecimal value 0x14, is an invalid character.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: '', hexadecimal value 0x14, is an invalid character.

Source Error:

Line 184: }
Line 185:
Line 186: doc.Save(@"../test.xml");

В чём причина ошибки не могу понять...
...
Рейтинг: 0 / 0
12.08.2010, 09:46
    #36787499
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
sedan13,
А случаем в "../test.xml" /t не является ли тем самым 0x14 (табуляция)? ;)
...
Рейтинг: 0 / 0
12.08.2010, 09:54
    #36787518
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
Курдльsedan13,
А случаем в "../test.xml" /t не является ли тем самым 0x14 (табуляция)? ;)
Курдль, при
Код: plaintext
doc.Save(Server.MapPath("test.xml"));
тоже самое
...
Рейтинг: 0 / 0
12.08.2010, 10:02
    #36787533
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
Упаковываю весь текст с помощью XCData:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DataTable MntrTmpltDT = new DataTable();

... заполняю DataTable ...        
    
XDocument doc = new XDocument(
                                new XDeclaration("1.0", "utf-8", "yes"),
                                new XElement("root")
                              );

DataRow[] allRows = MntrTmpltDT.Select();

foreach (DataRow dr in allRows)
{
       XElement newRow = new XElement("row",
                                                new XElement("id_mntr", new XCData(dr["id_mntr"].ToString())),
                                                new XElement("nomk_ls", new XCData(dr["nomk_ls"].ToString())),
                                                new XElement("name_med", new XCData(dr["name_med"].ToString()))
                                              );
       doc.Root.Add(newRow);
}

doc.Save(@"../test.xml");

Результат тот же...

'', hexadecimal value 0x14, is an invalid character.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: '', hexadecimal value 0x14, is an invalid character.

Source Error:

Line 184: }
Line 185:
Line 186: doc.Save(@"../test.xml");
...
Рейтинг: 0 / 0
12.08.2010, 10:04
    #36787539
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
sedan13,

А пробовали все строки на экран вывести (внутри цикла добавить тестовую команду)?
...
Рейтинг: 0 / 0
12.08.2010, 11:09
    #36787736
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
в общем это пара некорректных текстовых элемента в одной из строчек в DataTable столбца name_med... при попытке их записать в ХМЛ файл возникает ошибка...

следовательно, теперь возникает вопрос: как можно на стадии формирования XDocument'a:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
foreach (DataRow dr in allRows)
            {
                XElement newRow = new XElement("row",
                                                new XElement("id_mntr", dr["id_mntr"].ToString()),
                                                new XElement("nomk_ls", dr["nomk_ls"].ToString()),
                                                new XElement("name_med", dr["name_med"].ToString()),
                                                new XElement("price", dr["price"].ToString())
                                              );
                doc.Root.Add(newRow);
            }
проконтролировать корректность добавляемой строки в XDocument?

что-то типа:

если XElement("name_med", dr["name_med"].ToString()) имеет некорректный формат для ХМЛ, то false
...
Рейтинг: 0 / 0
16.08.2010, 11:18
    #36793118
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при сохранении XML XDocument в файл
в общем тупо вырезаю этот элемент из строки и всё отлично работает:
Код: plaintext
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.
foreach (DataRow dr in allRows)
            {
                //проверка присутствия в name_med некорректного символа с кодом 0x14
                if (!dr["name_med"].ToString().Contains(Convert.ToString((char)0x14)))
                {
                    XElement newRow = new XElement("row",
                                                new XElement("id_mntr", dr["id_mntr"].ToString()),
                                                new XElement("nomk_ls", dr["nomk_ls"].ToString()),
                                                new XElement("name_med", dr["name_med"].ToString()),
                                                new XElement("price", dr["price"].ToString())
                                              );
                    doc.Root.Add(newRow);
                }
                //удаляем из name_med некорректный символ с кодом 0x14
                else
                {
                    dr["name_med"] = dr["name_med"].ToString().Replace((char)0x14,' ');
                    XElement newRow = new XElement("row",
                                                new XElement("id_mntr", dr["id_mntr"].ToString()),
                                                new XElement("nomk_ls", dr["nomk_ls"].ToString()),
                                                new XElement("name_med", dr["name_med"].ToString()),
                                                new XElement("price", dr["price"].ToString())
                                              );
                    doc.Root.Add(newRow);
                }
            }
всех благодарю, все свободны :)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка при сохранении XML XDocument в файл / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]