Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 14:06   #1
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию Проблема с кодировкой при загрузке XML

Доброго времени суток!
Ситуация такая:
создал приложение wpf. загружаю XML
Код:
FileStream reader = new FileStream(pathXML, FileModeOpen, FileAccess.Read);
XmlDocument CompSpec = new XmlDocument();
CompSpec.Load(reader);
далее уже начинаю работать с тэгами XML
выдает ошибку "invalid character in the given encoding"

XML имеет вид

Код:
<?xml version ="1.0" ?>
<PASP_ROOT>
Version = 1.0.0.0
cModelTxtName = "КА"
tSessionTime = 5:7:5.000000
dSessionDate = 5/4/2013
cDataFileName = "fr_KV1_03909_03904_02_3NP2_08_T_PSS1_142210_080413.tiff"
cProcLevel = "2"
nMarH_WGS84 = 139.161639647558
bSunAngle = 47.2482359871995, 160.00986241396
<Device>
cDeviceName = "PSS1"
cDeviceTxtName = "ПСС"
<Ch1>
nChannelNumber = 0
</Ch1>
</Device>
<Geo>
<CSGeoRef>
......
Подскажите, пожалуйста, как побороть эту ошибку.
RADEM вне форума Ответить с цитированием
Старый 06.06.2013, 17:12   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

XML который представлен выше некорректный. Теги не все
Вот пример правильного xml, сравни его со своим:
Код:
<note>
<to>
Tove
</to>
<from>
Jani
</from>
<heading>
Reminder
</heading>
<body>
Don't forget me this weekend!
</body>
</note>
P.S. как вообще был получен этот xml?
Hollander вне форума Ответить с цитированием
Старый 07.06.2013, 08:31   #3
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
XML который представлен выше некорректный. Теги не все
Вот пример правильного xml, сравни его со своим:
Код:
<note>
<to>
Tove
</to>
<from>
Jani
</from>
<heading>
Reminder
</heading>
<body>
Don't forget me this weekend!
</body>
</note>
P.S. как вообще был получен этот xml?
XML зависит не от меня, поэтому не могу внести изменения в его структуру при создании
А в чем XML некоректен? Я представил не весь кож XML
RADEM вне форума Ответить с цитированием
Старый 07.06.2013, 08:54   #4
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию

Вот полный код XML

Код:
<?xml version ="1.0" ?>
<PASP_ROOT>
Version = 1.0.0.0
cModelTxtName = "КА"
tSessionTime = 5:7:5.000000
dSessionDate = 5/4/2013
cDataFileName = "fr_KV1_03909_03904_02_3NP2_08_T_PSS1_142210_080413.tiff"
cProcLevel = "2"
nMarH_WGS84 = 139.161639647558
bSunAngle = 47.2482359871995, 160.00986241396
<Device>
cDeviceName = "PSS1"
cDeviceTxtName = "ПСС"
<Ch1>
nChannelNumber = 0
</Ch1>
</Device>
<Geo>
<CSGeoRef>
nLUpLat = 47.5006671420155
nLUpLon = 135.328988968881
nRUpLat = 47.5003116606566
nRUpLon = 135.435618370698
nRDownLat = 47.4279347559346
nRDownLon = 135.435020840312
nLDownLat = 47.4282893429943
nLDownLon = 135.328537692797
nLUpNord = 5260856.52130985
nLUpEast = 524776.960543877
nRUpNord = 5260856.52130985
nRUpEast = 532807.690543877
nRDownNord = 5252812.65130985
nRDownEast = 532807.690543877
nLDownNord = 5252812.65130985
nLDownEast = 524776.960543877
</CSGeoRef>
<GeoCoding>
cCoordSystName = "WGS 84 / UTM zone 53N"
nCoordSystCode = 32653
cZoneName = "UTM zone 53N"
nZoneCode = 16053
cTrMethodName = "Transverse Mercator"
nTrMethodCode = 1
cGeoDatName = "WGS 84"
nGeoDatCode = 4326
nLonOfOrig = 135
nLatOfOrig = 0
nScAtOrig = 0.9996
nFalsEast = 500000
nFalsNord = 0
</GeoCoding>
<FormatNI>
nScenePosX = 0
nScenePosY = 0
nSceneWidth = 3668
nSceneLength = 3674
nPixelWidth = 2.19
nScale = 0.00219
nPixelHeight = 2.19
</FormatNI>
</Geo>
<QReport>
n_prVideoFail = 0.012188458790401
n_prKadrFail = 0
n_PssImp = 0
n_MssImp = 0
n_KadrLinkAccuracy = 0.343993373140401
</QReport>
</PASP_ROOT>
RADEM вне форума Ответить с цитированием
Старый 07.06.2013, 09:01   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

определите кодировку вашего xml, и в ней и читайте файл.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2013, 12:54   #6
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию

Попробовал просто убрать пробел в строке <?xml version ="1.0" ?>, получилось <?xml version ="1.0"?> и все нормально стало работать. Можно ли программно этот косяк перед загрузкой XML убирать, не редактируя XML вручную?

Последний раз редактировалось RADEM; 07.06.2013 в 14:57.
RADEM вне форума Ответить с цитированием
Старый 08.06.2013, 16:05   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в принципе можно, кто вам запрещает?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2013, 08:41   #8
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в принципе можно, кто вам запрещает?
никто Но как это сделать?
RADEM вне форума Ответить с цитированием
Старый 10.06.2013, 19:55   #9
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Удалить первую строку (этот метод создает новый файл без первой строки):
Код:
var lines = File.ReadLines("input.txt").Skip(1);
File.WriteAllLines("output.txt", lines);
Hollander вне форума Ответить с цитированием
Старый 16.06.2013, 10:51   #10
RADEM
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
Удалить первую строку (этот метод создает новый файл без первой строки):
Код:
var lines = File.ReadLines("input.txt").Skip(1);
File.WriteAllLines("output.txt", lines);
Спасибо! Все работает!!!

Последний раз редактировалось RADEM; 16.06.2013 в 11:03.
RADEM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке XML файла Alter Общие вопросы Delphi 4 25.09.2011 13:58
Проблема при загрузке файла XML в TreeView artemavd Общие вопросы Delphi 1 20.06.2010 15:39
ПРоблема при загрузке Digi Помощь студентам 4 29.11.2009 15:44
Проблема при загрузке ХР Женя2 Windows 7 30.08.2009 23:02
Обработка XML строки при загрузке dbf в Delphi SereJa1020 БД в Delphi 1 18.12.2007 18:28