powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка при сохранении XML XDocument в файл
7 сообщений из 7, страница 1 из 1
Ошибка при сохранении XML XDocument в файл
    #36787470
sedan13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сохраняю данные из 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
Ошибка при сохранении XML XDocument в файл
    #36787499
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sedan13,
А случаем в "../test.xml" /t не является ли тем самым 0x14 (табуляция)? ;)
...
Рейтинг: 0 / 0
Ошибка при сохранении XML XDocument в файл
    #36787518
sedan13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курдльsedan13,
А случаем в "../test.xml" /t не является ли тем самым 0x14 (табуляция)? ;)
Курдль, при
Код: plaintext
doc.Save(Server.MapPath("test.xml"));
тоже самое
...
Рейтинг: 0 / 0
Ошибка при сохранении XML XDocument в файл
    #36787533
sedan13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упаковываю весь текст с помощью 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
Ошибка при сохранении XML XDocument в файл
    #36787539
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sedan13,

А пробовали все строки на экран вывести (внутри цикла добавить тестовую команду)?
...
Рейтинг: 0 / 0
Ошибка при сохранении XML XDocument в файл
    #36787736
sedan13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем это пара некорректных текстовых элемента в одной из строчек в 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
Ошибка при сохранении XML XDocument в файл
    #36793118
sedan13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем тупо вырезаю этот элемент из строки и всё отлично работает:
Код: 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
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка при сохранении XML XDocument в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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