|
|
|
И снова XDTO | ☑ | ||
|---|---|---|---|---|
|
0
alf2006x
17.10.24
✎
12:22
|
Ну, всё,... я сдаюсь.
В поисках решения по внесению изменений в файл xml всё же решил использовать ФабрикуXDTO, как наиболее визуально компактную и удобную. Вроде задача элементарная, но сделать не могу. Нужно: в XML файл "styles.xml", в СписокXDTO ("fonts") добавить такую ветку тега: <font> <u /> <sz val="8" /> <color theme="10" /> <name val="Arial" /> </font> Всё на что меня хватило:
ПутьКФайлуStyles = ВременныйКаталог + "1\xl\styles.xml";
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлуStyles);
ЧтениеXML.ПерейтиКСодержимому();
ПутьКФайлуStylesНов = ВременныйКаталог + "1\xl\styles_NEW.xml";
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлуStylesНов, ПараметрыЗаписиXML);
ЗаписьXML.ЗаписатьБезОбработки("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>");
URIПространстваИмен = ЧтениеXML.URIПространстваИмен;
styleSheet = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
ЧтениеXML.Закрыть();
СписокFonts = styleSheet.fonts.font;
AnyType = СписокFonts[0].Тип();
НовыйЭлементFont = ФабрикаXDTO.Создать(AnyType);
НовыйЭлементU = ФабрикаXDTO.Создать(AnyType);
НовыйЭлементU.Последовательность().Добавить("u");
НовыйЭлементFont.Последовательность().Добавить(НовыйЭлементU);
СписокFonts.Добавить(НовыйЭлементFont);
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, styleSheet, "styleSheet", URIПространстваИмен, ФормаXML.Элемент);
ЗаписьXML.Закрыть();
Строка: НовыйЭлементFont.Последовательность().Добавить(НовыйЭлементU); вылетает с ошибкой: Несоответствие типов (параметр номер '1') Понимаю, что это делается как-то не так,.. как-то по-другому, перепробовал всё, что смог понять из XDTO - ничего не проканало. Делаю вывод: из XDTO нифига не понял. Натолкните на правильный путь,.. ну пажааа-алуста )) |
|||
|
1
Волшебник
15.10.24
✎
19:48
|
Может не нужно...
|
|||
|
2
Волшебник
15.10.24
✎
19:49
|
XDTO — это для обмена данными, а не шрифтами.
|
|||
|
3
alf2006x
16.10.24
✎
10:33
|
(1) Ну ок. (2) А как тогда красиво внести изменения в XML ?
|
|||
|
4
alf2006x
16.10.24
✎
11:31
|
Чё, прямо ваще без вариантов? ))
|
|||
|
5
Волшебник
16.10.24
✎
13:32
|
Не морочьте нам голову. Здесь не нужна фабрика XDTO. Обращайтесь с XML-файлом, как с текстовым.
|
|||
|
6
alf2006x
17.10.24
✎
12:11
|
Тема открыта Чтобы в текстовом файле найти нужное место куда вставить вставку, надо написать кучу жуткого G-кода. А если надо добавить несколько изменений в файл - то со стороны модуля это выглядит как аццкая жесть ) А в XDTO - всё замечательно и читается, и через точку находится и записывается обратно в XML. Вопрос только с добавлением новых записей. |
|||
|
7
alf2006x
17.10.24
✎
12:23
|
Должен же быть простой способ добавить обычный тег <font> </font> в XDTO.
|
|||
|
8
Волшебник
17.10.24
✎
12:30
|
(7) XDTO работает с объектами. Заведите объект font
|
|||
|
9
alf2006x
17.10.24
✎
13:50
|
(8) А как завести объект?
Чтобы создать новый объект XDTO (через ФабрикаXDTO.Создать()) мне обязательно нужен либо ТипЗначенияXDTO либо ТипОбъектаXDTO. А где взять ТипЗначенияXDTO либо ТипОбъектаXDTO я никак не могу понять. |
|||
|
10
Волшебник
17.10.24
✎
13:55
|
Заведите свой справочник "Шрифты"
|
|||
|
11
Hmster
17.10.24
✎
14:19
|
(0) ну попробуй посмотреть в сторону "Построитель DOM"
|
|||
|
12
alf2006x
17.10.24
✎
14:36
|
(11) Спасибо, попробую
|
|||
|
13
alf2006x
17.10.24
✎
14:45
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |