|
И снова 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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |