Имя: Пароль:
1C
 
Странный xml файл
0 shira84
 
07.06.24
10:22
Какой-то странный файл получаю на выходе из тсд, хочу товары загрузить в 1С, но естественно он не читается никак. Пробелы (скорее всего даже спецсимволы) почему-то после каждой буквы. Может кто-то подскажет что с ним можно сделать? Пример файла:
< ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U T F - 8 " ? >
< T a b l e   D o c u m e n t I d = " 2 8 9 9 9 c e 4 - f 8 d a - 1 1 e e - a 1 c 4 - 0 0 1 5 5 d 7 5 9 a 5 4 "   D o c u m e n t N a m e = " =25=B0@870F8O  !,   ,     #0 0 - 0 0 0 0 0 1   >B  2 8 . 0 5 . 2 4 "   D o c u m e n t T y p e = " =25=B0@870F8O!" >
     < R e c o r d   B a r C o d e B a s e 6 4 = " M j A 4 M T A 0 N z U 3 O D U x N A = = "   N a m e = " @>5:B>@  B e n Q   W 6 0 0   8=2: 1 1 0 1 3 4 0 5 0 0 0 0 1 "   A r t i c l e = " "   U n i t O f M e a s u r e m e n t = " "   C h a r a c t e r i s t i c O f N o m e n c l a t u r e = " "   S e r i e s O f N o m e n c l a t u r e = " "   B a r C o d e S e r i e s O f N o m e n c l a t u r e = " "   N u m b e r O f B a r C o d e s = " 1 "   Q u a n t i t y = " 1 " / >
< / T a b l e >
1 Тихий омут
 
07.06.24
10:29
BOM в начале файла есть?
2 steep1
 
07.06.24
10:30
(0) двойные кавычки, открывайте сначало файл как текстовый документ вносите правки и потом только открывайте как хмл
3 Мультук
 
гуру
07.06.24
10:37
(0)

P.S.

Да, время бежит.

hex-коды, Hiew, Far: F3 а потом F4

Кодировки, перекодировщики.

Строка by default уже набор символов, а не байтов.
4 shira84
 
07.06.24
10:41
(2) пробовал СтрНайти() СтрЗаменить() бесполезны, т.к. там какието неведомые спецсимволы а не пробелы
5 Chai Nic
 
07.06.24
10:42
Выложите лучше этот xml в виде файла. А то гадать, что изначально в файле, а что нафантазировал движок форума, неблагодарное дело..
6 Тихий омут
 
07.06.24
10:45
(4) Проверь в начале файла любым hex редактором наличие трёх байт - EF BB BF. Если их нет - добавь
7 shira84
 
07.06.24
10:53
8 shira84
 
07.06.24
10:55
(6) присутствуют
9 shira84
 
07.06.24
11:05
ЧтениеТекста в кодировке UTF-16 более менее нормально сработало, куча иероглифов конечно, но хоть позволяет работать как со строкой. Мне по сути штрихкод оттуда нужен и количество.
10 Лирик
 
07.06.24
11:13
Такое ощущение что либо ТСД либо драйвер либо обработчик получает данные в виде массива символов и "собирает" их в строку с разделителем который "скорее всего даже спецсимволы". Копайте от настроек ТСД. Можно попробовать сбросить до заводских настроек.
11 Chai Nic
 
07.06.24
11:17
Да, похоже что реально там UTF16 LE, а в теге encoding указано неверное значение UTF-8. Поэтому его и не открывает парсер нормально.
12 Тихий омут
 
07.06.24
11:18
Действительно странный файл. Поставил BOM от UTF16LE - часть файла стала читаемой, часть - превратилась в хз что... Как будто там куски в разных кодировках
13 Djelf
 
07.06.24
11:40
Декодированный
<?xml version="1.0" encoding="UTF-8"?>
<Table DocumentId="28999ce4-f8da-11ee-a1c4-00155d759a54" DocumentName="Инвентаризация ОС, НМА, НПА БУ00-000001 от 28.05.24" DocumentType="ИнвентаризацияОС">
	<Record BarCodeBase64="NDYwMTU0NjA4MDg3NQ==" Name="Компьютер ACER (комплект) инв:1101340300001" Article="" UnitOfMeasurement="" CharacteristicOfNomenclature="" SeriesOfNomenclature="" BarCodeSeriesOfNomenclature="" NumberOfBarCodes="1" Quantity="1"/>
	<Record BarCodeBase64="MjA4MTA0NzU3ODUzOA==" Name="Компьютер ACER (комплект) инв:1101340300002" Article="" UnitOfMeasurement="" CharacteristicOfNomenclature="" SeriesOfNomenclature="" BarCodeSeriesOfNomenclature="" NumberOfBarCodes="0" Quantity="0"/>
	<Record BarCodeBase64="MjA4MTA0NzU3ODUyMQ==" Name="Компьютер ACER (комплект) инв:1101340300003" Article="" UnitOfMeasurement="" CharacteristicOfNomenclature="" SeriesOfNomenclature="" BarCodeSeriesOfNomenclature="" NumberOfBarCodes="0" Quantity="0"/>
	<Record BarCodeBase64="MjA4MTA0NzU3ODUxNA==" Name="Проектор BenQ W600 инв:1101340500001" Article="" UnitOfMeasurement="" CharacteristicOfNomenclature="" SeriesOfNomenclature="" BarCodeSeriesOfNomenclature="" NumberOfBarCodes="1" Quantity="1"/>
</Table>
14 Тихий омут
 
07.06.24
11:44
(13) Респект👍. Поделитесь секретом
15 shira84
 
07.06.24
11:52
(13) как? Средствами 1С это можно как-то программно сделать?
16 Тихий омут
 
07.06.24
11:56
(15) Похоже, там кривые переносы строк - 0d 0a 00. Ну или не кривые, а в формате, мне ещё неизвестном. Первое, что в голову приходит - побайтовый разбор файла и исправление этой бурды с переносами, но надо пробовать
17 trad
 
07.06.24
11:59
(14) (15) как выше сказано там BOM UTF-8, хотя реально UTF-16 причем перемешано BE и LE. Перенос строк - однобайтовый. Франкенштейн.
Руками надо байты туда сюда подвигать
18 trad
 
07.06.24
12:00
Попытаться поправить источник такого файла
19 trad
 
07.06.24
12:13
(15) в начале EF BB BF заменить на FF FE
далее 0D 0A заменить на 0D 00 0A



https://www.dropbox.com/scl/fi/240i65osmjdp1g94kiift/TSDData.xml
20 Djelf
 
07.06.24
12:07
Штирлицом:
wiki:Штирлиц_(программа)
https://www.softportal.com/software-3560-shtirlits.html
Кодировка вроде UTF-16 LE, но действительно дебильная.
Перед "<" в самом начале нет 0x00, переносы строк пишутся как 0x00 0x0D 0x0A, а в этой кодировке должны быть 0x00 0x0D 0x00 0x0A
21 Garykom
 
гуру
07.06.24
12:11
(0) Что за ТСД такое выдает?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн