Пропадают пробелы при чтение XML

1. user1878860 01.08.23 08:49 Сейчас в теме
Доброе время суток.

Возникла неожиданная проблема.
Использую ЧтениеXML для открытия файла XML. И, соответственно, ЗаписьXML, для сохранения изменений в новый XML-файл.
Проблема в том, что после записи, теряются пробелы в новом файле, которые были в исходном.
После проверки, я понял что теряются пробелы которые в XML сохранены как отдельные значения элементов (узлов). Почитав справку о "ЧтениеXML", установил соответствующие настройки, но пробелы теряются по-прежнему:
	ПараметрыЧтенияXML = Новый ПараметрыЧтенияXML (,,ПробельныеСимволыXML.Сохранять,,,,,,Ложь,,Истина);
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ИгнорироватьПробелы = Ложь;
	ЧтениеXML.ОткрытьФайл(ПутьКXml, ПараметрыЧтенияXML);


Что я сделал не правильно?
P.S.: ЧтениеXML и ЗаписьXML используются совместно с "ПостроительDOM".
По теме из базы знаний
Найденные решения
2. partizand 137 24.08.23 14:50 Сейчас в теме
(1) Думаю дело в построителе DOM. Он съедает текст тэгов, состоящий только из пробелов. У построителя есть параметр чтения по пробелам, но кажется он их игнорирует. Подозреваю ошибку в платформе или по крайней мере отсутствие документации.

Частный случай решения заменить все пустые тэги на пробелы. При этом если были двойные пробелы, они станут одинарными

Разыменователь=Новый РазыменовательПространствИменDOM(ДокументDOM);
	
ТекстXPath = "//w:t[@xml:space='preserve' and not(text())]";
ВыражениеXPath = ДокументDOM.СоздатьВыражениеXPath(ТекстXPath, Разыменователь);
	
РезультатВыражения = ВыражениеXPath.Вычислить(ДокументDOM);
	
УзелDOM = РезультатВыражения.ПолучитьСледующий();
Пока УзелDOM <> Неопределено Цикл
	УзелDOM.ТекстовоеСодержимое = " ";
	УзелDOM = РезультатВыражения.ПолучитьСледующий();
КонецЦикла;
Показать
vre; user1878860; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. partizand 137 24.08.23 14:50 Сейчас в теме
(1) Думаю дело в построителе DOM. Он съедает текст тэгов, состоящий только из пробелов. У построителя есть параметр чтения по пробелам, но кажется он их игнорирует. Подозреваю ошибку в платформе или по крайней мере отсутствие документации.

Частный случай решения заменить все пустые тэги на пробелы. При этом если были двойные пробелы, они станут одинарными

Разыменователь=Новый РазыменовательПространствИменDOM(ДокументDOM);
	
ТекстXPath = "//w:t[@xml:space='preserve' and not(text())]";
ВыражениеXPath = ДокументDOM.СоздатьВыражениеXPath(ТекстXPath, Разыменователь);
	
РезультатВыражения = ВыражениеXPath.Вычислить(ДокументDOM);
	
УзелDOM = РезультатВыражения.ПолучитьСледующий();
Пока УзелDOM <> Неопределено Цикл
	УзелDOM.ТекстовоеСодержимое = " ";
	УзелDOM = РезультатВыражения.ПолучитьСледующий();
КонецЦикла;
Показать
vre; user1878860; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот