#0
by Stilet
Всем привет! Подскажите коллеги, как проще решить одну задачу. Есть некий файл XML. Требуется менять значение тегов и атрибутов, не меняя структуры. Первым делом я подумал про ТекстовыйДокумент - но уж больно неудобно им редактировать - легко ошибиться при поиске нужного тега. А ЧтениеXML не подходит из-за того, что им не модифицируешь файл. Я подумал может ЧтениемXML найти нужный тег и передать номер строки в текстовый документ, чтобы отредактировать, но что то не смог найти такого способа. Может кто нибудь сталкивался с элегантным и быстрым решением подобной задачи?
#2
by Defender aka LINN
Только через текст. Для удобства/скорости можно регулярные выражения поюзать.
#5
by Stilet
Чтение и запись XML ? Если они позволят быстро и красиво сделать - то почему бы и нет. Я только не понимаю как. ЗаписьХМЛ создает полностью новый файл, стирая содержимое шаблона
#6
by Stilet
при большом объеме файла (да и теги постоянно повторяются) очень уж геморно... Сейчас подумаю насчет регеспов.. но тоже там куча засад. например там есть тег id - так его ОЧЕНЬ много везде )
#7
by Tapo4ek
Сначала писать во временный, потом в конце обработчика первый удалить, второй записать с именем первого. В этом вопрос?
#8
by Stilet
Хотелось бы встроенными средствами 1С, но вот уже начинаю думать о внешних библиотеках...
#11
by Tapo4ek
А елки, че гоню-то, не надо никаких временных, просто в файл с которого читал - туда и пишешь)))
#12
by Stilet
А как понять в какую строку? Ну нашел я нужный тег в ЧтениеXML... а как понять в какой строке он, чтобы вызвать метод ЗаменитьСтроку(<НомерСтроки>, <Строка>)
#13
by artbear
Файл большой? Если не слишком, можно попробовать загрузить в дерево и уже с деревом работать.
#16
by Stilet
небольшой пример вверху. Самое неприятно, что есть несколько тегов <category> , а в них id
#17
by MM
Посмотри описание модели DOM. ДокументDOM можно прочитать из документа XML, исправить, а потом записать в документ XML. Недостаток весь файл будет храниться в ОЗУ в процессе обработки.
#18
by Stilet
спасибо сейчас посмотрю.. Но мне еще одна мысли пришла в голову. Создать ЧтениеXML и ЗаписьXML. Первым читаю теги, а вторым создаю точно такой же файл, только с другим именем на диске и с другими значениями тегов.
#20
by AaNnDdRrEeYy
как вариант Объект XDTO прочитать в него изменить поля и записать в новый файл, если схема файла есть.
#22
by AaNnDdRrEeYy
схема как раз таки и описывает все возможные варианты содержимого файла. в файле есть простанство имен <shop xmlns:xlink="http://www.w3.org/1999/xlink"> значит у тех кто этот файл создает схема есть.
#23
by Stilet
ну вот уже столкнулся с непонятками. Я раньше с этим объектом не работал, поэтому наверняка где то туплю. написал код простейший: результирующий файл отличается от входного. Входной наверху я привел, а результирующий: ниже брошу для того, чтобы понятнее было
#27
by MM
Элементы <id/>, <id_parent/> ,<level_depth/> просто записались в сокращённой форме, в общем случае парсер, который его будет читать, должен сработать правильно.
#29
by MM
Вряд ли. Слеш в конце элемента означает, что внутри элемента пусто, в этом случае начинающий и замыкающий теги объединяются. Меня в этих документах больше смутило то, что prestashop != shop.
#31
by Stilet
Все же 1С такая 1С. Без выбрыконов не может <id>6</id> <id_parent>2</id_parent> записывает не как строка, а как прости меня Господи числа. Даже наименование пишет без кавычек. Хотя передаю ему именно как строку - <id>6</id> = "6" Минеральные масла = "Минеральные масла" Подскажите почему кавычки не ставит?
#32
by AaNnDdRrEeYy
В строках не должно быть кавычек. до даты доберешся она вообще будет записана как 2011-06-20
#33
by MM
Почему сразу 1С виновата, DOM-парсер, вроде как, Майкрософтовский, ну или свободный, платформа оболочка над ним. Данные о типе элемента должны храниться схеме XML. А для кавычек в XML выделен спецсимвол & , в который парсер сам преобразует кавычки из переданного текста.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Программно завершить редактирование строки в многострочной части документа
- Форма. Как запретить редактирование всей табличной части документа?
- Справочник -> Форма списка -> запрет на редактирование
- V7Plus при сохранении файла XML обрезает имя файла до 64 символов
- Режим открытия документов по-умолчанию: редактирование или просмотр
- Нет доступа на редактирование конфигурации
- как разрешить редактирование таблицы на форме
- УТ11 - Запрет изменять существующего контрагента
- Xml создание файла
- Записать ТабличныйДокумент в новый лист существующего файла Excel
В этой группе 1С
- v8: Выборка с иерархией - как обойти иерархию ПоГруппировкамСИерархией
- СКД: Программно созданный отбор на форме
- Продажа акций в 1С УПП
- Как с регистра накопления ПартииТоваровНаСкладах организовать начальный остаток
- v8: БП 2.0. Проблема с закрытием 20.01 по НУ
- v8: "Не обнаружен ключ защиты программы или полученная программная лицензия!"
- v8: Отбор по значению в текущей колонке, как программно?
- Математические грибы
- УПП 1.3.13.1 движение по регистру партии товаров на складах
- v8: БП 2.0. Счет 68.04.2 не закрывается
- УТ11 Взаиморасчеты по договорам
- OFF: За ноги и об забор!
- Не идет выгрузка файла на ftp
- 1с 8.2 Не совпадают сумма документа и её расшифровка
- v8: 8.2. УФ: Вывод нескольких картинок в строке таблицы, как?
- УПП 1.3 Плановая себестоимость
- Веб-клиент работает быстрее тонкого.
- Несворачивает строки в табл. документе
- авто обмен 1с7.7 ТиС
- УТ11 На что влияет статус отгрузки в реализации?