![]() |
![]() |
|
Пропадают пробелы при чтении XML | ☑ | ||
---|---|---|---|---|
0
Super Alexander23
03.08.23
✎
05:56
|
Доброе время суток.
Возникла неожиданная проблема. Использую ЧтениеXML для открытия файла XML (document.xml (docx)) и, конечно, ЗаписьXML для сохранения изменений в новый XML-файл. Проблема в том, что после записи, теряются пробелы в новом файле, которые были в исходном. После проверки, я понял что теряются пробелы, которые в XML сохранены как отдельные значения элементов (узлов): <w:r w:rsidR="00B55E60"> <w:rPr> <w:sz w:val="24"/> </w:rPr> <w:t xml:space="preserve"> </w:t> </w:r> Даже общепринятый (указанный в спецификации XML) атрибут, указывающий важность пробела "xml:space="preserve"" имеется, но 1С-ный парсер игнорирует это. Почитав справку о "ЧтениеXML", установил соответствующие настройки, но пробелы теряются по-прежнему: ПараметрыЧтенияXML = Новый ПараметрыЧтенияXML (,,ПробельныеСимволыXML.Сохранять,,,,,,Ложь,,Истина); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ИгнорироватьПробелы = Ложь; ЧтениеXML.ОткрытьФайл(ПутьКXml, ПараметрыЧтенияXML); ЧтениеXML и ЗаписьXML используются совместно с "ПостроительDOM". Как же всё-таки сохранять пробелы, которые в XML сохранены как отдельные значения элементов (узлов)? |
|||
1
Super Alexander23
04.09.23
✎
05:09
|
Мне ответили на форуме infostart: https://forum.infostart.ru/forum9/topic301704/#message2991525
Для меня предложенное там решение сработало: Разыменователь=Новый РазыменовательПространствИменDOM(ДокументDOM); ТекстXPath = "//w:t[@xml:space='preserve' and not(text())]"; ВыражениеXPath = ДокументDOM.СоздатьВыражениеXPath(ТекстXPath, Разыменователь); РезультатВыражения = ВыражениеXPath.Вычислить(ДокументDOM); УзелDOM = РезультатВыражения.ПолучитьСледующий(); Пока УзелDOM <> Неопределено Цикл УзелDOM.ТекстовоеСодержимое = " "; УзелDOM = РезультатВыражения.ПолучитьСледующий(); КонецЦикла; |
|||
2
DrZombi
04.09.23
✎
06:11
|
(1) Ваш ответ не дает понимания:
1. Зачем вам пробелы? 2. Как вы поняли, что они пропали? (вы не показали результат) 3. Самое ужасное, что может случиться, это передать текст, который не читается в XML :) |
|||
3
Super Alexander23
08.09.23
✎
05:55
|
(2) Вы работали с document.xml из docx? Иногда, обычный пробел между словами описывается в структуре отдельным элементом. После обработки через DOM эти пробелы пропадают - т.е. при открытии документа в Word, например, появляются "слипшиеся" слова.
|
|||
4
Garykom
08.09.23
✎
07:26
|
КонфигурацияПостроителяDOM для ПостроительDOM перед Прочитать() пробовал?
v8: Как прочитать XML с помощью ПостроителяDOM вместе с комментариями? ПостроительДом.КонфигурацияDOM.ИменаПараметров.Элемент(2) "element-content-whitespace" Строка |
|||
5
Valdis2007
08.09.23
✎
08:19
|
в 1с откуда свичнулся? или просто подработку взял?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |