Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XMLType + XMLDoc / 9 сообщений из 9, страница 1 из 1
03.02.2006, 16:26
    #33522631
Max Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
Путем сериализации получаю xmlDoc в InnerXml такой текст

Код: plaintext
<?xml version="1.0" encoding="UTF-8"?><Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><a>0</a><s>мама мыла раму</s><d>0001-01-01T00:00:00</d><_innerTest><b>10</b></_innerTest></Test>

Записываю его в БД

Код: plaintext
1.
2.
3.
4.
OracleCommand oraCmd = new OracleCommand("insert into test (xmldoc) values (:xmlDoc)", oracon);

            oraCmd.Parameters.Add(new OracleParameter("xmlDoc", OracleDbType.XmlType, new OracleXmlType(oracon, xmlDoc), ParameterDirection.Input));

            oraCmd.ExecuteNonQuery();

читаю из БД

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            OracleCommand oraCmd = new OracleCommand("select xmldoc from test", oracon);
            

            OracleDataReader oraReader = oraCmd.ExecuteReader();
 
            
            while (oraReader.Read())
            {
                xmlDoc = oraReader.GetOracleXmlType(0).GetXmlDocument();
            }

после чего в его InnerXml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  <?xml version="1.0" encoding="UTF-8" ?> 
- <Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <a>0</a> 
  <s>мама мила раму</s> 
  <d>0001-01-01T00:00:00</d> 
- <_innerTest>
  <b>10</b> 
  </_innerTest>
  </Test>

т.е. кириллица попортилась. Соотвественно при десериализации в поле s тоже получается фигня.

Подскажите пожалуйста, на каком этапе потерялась кириллица. И что делать, что бы она не терялась.
...
Рейтинг: 0 / 0
03.02.2006, 16:40
    #33522675
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
даю наводку: encoding="UTF-8" ;)
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
03.02.2006, 16:46
    #33522699
Max Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
Пробовал без энкодинга - результат не меняется
...
Рейтинг: 0 / 0
03.02.2006, 16:49
    #33522709
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
попробуй указать windows-1251
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
03.02.2006, 17:04
    #33522755
Max Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
не помогает. Похоже энкодинг вообще игнорируется
...
Рейтинг: 0 / 0
03.02.2006, 17:09
    #33522775
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
хм...тогда похоже проблемы в самой базе...поле, в котором сохраняются данные поддерживает кирилицу?
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
03.02.2006, 17:19
    #33522804
Max Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
Да. Поле оракловского типа XmlType

если после вставки в базу в pl/sql developere выполнить запрос

Код: plaintext
select t.xmldoc.getclobval() xmldoc from test t

то отображает кириллицу нормально
...
Рейтинг: 0 / 0
07.02.2006, 13:24
    #33528513
Max Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
Разобрался. Итого: энкодинг указаный в самом xml и шарпу и ораклу пофиг. Проблема в неявной переконвертации ODP

Решение такое:
Код: plaintext
OracleCommand oraCmd = new OracleCommand("select new XMLTYPE(convert( test.xmldoc, 'UTF8', 'UTF8')) from test", oracon)

А дальше читаем как и прежде

Код: plaintext
 xmlDoc = oraReader.GetOracleXmlType(0).GetXmlDocument();

Спасибо 2 Лиман Артём за попытку помочь
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.01.2014, 17:39
    #38522320
Pastic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLType + XMLDoc
А в каком неймспейсе находится oracledbtype?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XMLType + XMLDoc / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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