Имя: Пароль:
1C
1С v8
Пропадают пробелы при чтении 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с откуда свичнулся? или просто подработку взял?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан