#0
by zhmur
Если кто то сталкивался то подскажите пути решения следующей проблемы. В базе Oracle 10gR2 хранится XML в CLOB т.е. не структурированный. Все нормально пока не пытаешься применить к XML функцию UpdateXML или подобные. После этого оракл "форматирует" весь XML. И получается вот что: До <a>Text1<b>Text2</b></a> После <a>Text1 <b>Text2</b> </a> Это неедопустимо для нашего приложения (и вообще говоря не верно) Есть ли мнения как "отключить форматирование?
#3
by zhmur
И дело даже не в переносе каретки, а в том что он туда добавляет пробелы лишние. Я привёл очень просто пример но на самом деле это происходит в XML файлах объемом 600 килобайт и больше.
#7
by asady
напиши свой парсер для этого или воспользуйся готовыми типо oxigenxml там кода строк на 20-30 будет.
#10
by Мяв-Мяв
а в чем трагизм-то? любой парсер плевать хотел и на возвраты и на табуляторы. кроме того это - совершенно нормальный вид XML.
#11
by zhmur
Так. По спецификации все что хранится после <a> до <b> считается текстом. Со всеми вытекающими последствиями. Именно поэтому ни альтова ни любой другой редактор или паресер никогда не разбивают подобные конструкции.
#12
by Мяв-Мяв
конечно. как текст оно и отражается. все что от открытия "а" и до открытия "b" создаю новый XML файл. Добавляю корневой элемент. внутрь элемента добавляю твою строчку "<a>Text1<b>Text2</b></a>". Сохраняю. все имеющиеся у меня вьюеры и редакторы показывают это как " <?xml version="1.0" encoding="utf-8" ?> - <root> - <a> Text1 <b>Text2</b> </a> </root> " хотя на самом деле ни переводов ни табуляторов нет. при перезаписи файла редактором переводы и табуляторы появляются. Отображение не изменяется.
#13
by Мяв-Мяв
смеху ради понатыкал табуляторов и пробелов вразнобой. добавил переводов и возвратов каретки. нафигачил пустых строк. отображение не меняется.
#14
by Лефмихалыч
(12,13) отображение не меняется от того, что в майкрософт интернет испортил'е есть встроенный XSLT, который делает Trim для значений элементов и вставляет переводы
#17
by Мяв-Мяв
словосочетние "майкрософт интернет испортил'е" что это такое и как оно влияет на отображение структуры xml файла в kxmleditor например.
#18
by Лефмихалыч
По первому пункту: "майкрософт интернет испортил" = MS Internet Explorer. по второму: два варианта, либо kxmleditor использует для визуализации IWebBrowser2, либо - такойже (аналогичный) XSLT
#19
by Лефмихалыч
про IWebBrowser2 - лажа, kxmleditor оказывается для KDE. Значит - второй вариант - такой же XSLT, который обрубает пробелы
#20
by Мяв-Мяв
пошел нашел компутер с виндовсом. в самом деле - отображает точно так же. и что характерно - майкрософтовский парсертоже говорит, что то, что от a до б - текст. Так что может на самом деле все равно, есть в xml файле табуляторы или нет? если и с ними и без них он парсится одинаково?
#21
by Лефмихалыч
за отображение XML в броузере отвечает таблица преобразований XSLT. При этом, значение, которое отображает браузер может отличаться от значения, содержащегося в XML, таким образом, автор прав в своем негодовании о том, что вместо XML документа, он получает ПРЕДСТАВЛЕНИЕ его после вызова UpdateXML. Я вот об этом говорил
#22
by Лефмихалыч
к слову, может в описании метода UpdateXML и подобных указано, что они возвращают ПРЕДСТАВЛЕНИЕ? Если - да, то тут ты сам виноват - не те методы вызываешь
#23
by Мяв-Мяв
наплюй на представление. xml совершенно равнодушен к знакам форматирования. UpdateXML "returns an XMLType instance with the updated value" после вызова автор получает валидный xml, абсолютно тождественный первоначальному, отформатированый для удобства чтения при отсутствии парсинга. Вот об этом я и говорил.
#24
by Лефмихалыч
да не тот же он получает документ, а уже другой - у него трагедия в том, что пробелов в значениях элементов должно быть столько, чтолько было до UpdateXML. Видать, самопальный парсер какой-то потом ни чего понять не может...
#25
by Мяв-Мяв
и это тоже понятно. формально он другой. но фактически (как xml) - тот же самый. но он уверен, что "это неправильно" и вместо того чтоб исправить свою самоделку сейчас будет тиранить оракл. вот залезет в доку, и увидит, что у функции 4 аргумента. и будет рыть дальше.
#26
by zhmur
Всем спасибо. Проблема решена. Когда не используется XMLType и преобразование осуществляется на лету разметка не вставляется. Причём исправлено это только в релизе 2. Что то я смотрю тут всё обсуждение свелось к тому зачем мне это надо :)
#27
by Мяв-Мяв
ну хотя ты и не сказал ни версии оракла, ни упомянул до этого про xmltype, скажи уже: зачем тебе это надо? и в чем неправильность-то?
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Печать ценников для 1Сv8 УТ для Казахстана
- Момент времени() в запросе
- Логическое завершение текста модуля.
- как создать пустую таблицу в запросе
- Длина Строки в 1с 7.7
- Как закрыть форму документа, без сохранения и без запроса на сохранение
- Как в типовой отчет добавить вычисляемое поле ?
- ЗУП Оплата труда инвалидов
- Внешняя печатная форма
- v7: Отклонение себестоимости в УПП
- Убрать меню "Операции" в УПП. Как?
- v7: Перенос документов из 7-ки Бух в 8-ку Бух
- v7: Бух77 Структура подчиненности
- Проблема с ПовторятьПриПечатиСтроки()
- Особенности реализации обработки «Проведение по партиям».
- Как выделить программно нужную строку в табличной части формы справочника?
- v7: Отражение БЛ в бухучете (проводки из ЗУП в БУХ)
- Как изменять отображение колонок в табличной части документа?
- Как удалить текущую строку ТЧ документа?
- Файл не обнаружен 'v8srvr://сервер/база/ConfigSave/versions' 8.1