![]() |
|
v7: выгрузка XML из 7.7 через v7plus.dll. Создание узла с двоеточием. | ☑ | ||
---|---|---|---|---|
0
Kudryashka
11.05.16
✎
19:02
|
Добрый вечер, уважаемые!
делаю так: Анализатор=СоздатьОбъект("AddIn.XMLParser"); Файл=Анализатор.СоздатьДокумент(); Файл.Кодировка="UTF-8"; esf = Файл.СоздатьПодчиненныйЭлемент("esf"); //:invoiceContainer esf.УстановитьПространствоИмен("namespace.v1","v1"); esf.УстановитьПространствоИмен("namespace.esf","esf"); esf.УстановитьПространствоИмен("namespace.abstractInvoice","a"); получаю <esf xmlns:a="namespace.abstractInvoice" xmlns:esf="namespace.esf" xmlns:v1="namespace.v1"> Нужно <esf:invoiceContainer xmlns:a="namespace.abstractInvoice" xmlns:esf="namespace.esf" xmlns:v1="namespace.v1"> имя узла с двоеточием. если ставлю в лоб, то ругается на двоеточие. делала так: V7PLUS.dll и XMLParser не получилось. говорит: |
|||
1
Kudryashka
11.05.16
✎
19:03
|
+недописало
говорит: Установка пространства имен возможна ТОЛЬКО для элементов, имеющих префикс, отличный от префикса данного элемента. как создать узел с двоеточием, помогите пожалуйста! |
|||
2
Злопчинский
11.05.16
✎
21:06
|
пиши тупо в текстовый файл последовательно нужные тебе символы/строчки. без привлечения сторонних компонент. и все.
|
|||
3
Kudryashka
11.05.16
✎
21:11
|
я этот совет видела во всех форумах))) просто я уже написала все через эту компоненту, такую работу проделала, все нормально выгружается, только этот долбанный узел с двоеточием остался, так неохота все переделывать если честно... если решения не найду, то, видимо, придется....
|
|||
4
Злопчинский
11.05.16
✎
22:41
|
я фиг его знает что такое пространство имен
у меня во всяких обменах без него все ходит... |
|||
5
Mr_Rm
11.05.16
✎
23:12
|
Если с минимальной переделкой, и повторные чтение-запись файла некритичны, то можно сохранить XML с именем узла
"esf_invoiceContainer", а потом открыть файл как текст и заменить в нем "<esf_invoiceContainer" на "<esf:invoiceContainer". |
|||
6
Злопчинский
11.05.16
✎
23:14
|
угу.. оботкрываешься... если выгрузка раз в пять минут идет.. и файл выгрузки мегабайтов много... обзаменяешьмся
|
|||
7
Mr_Rm
11.05.16
✎
23:58
|
(6) Таких жестких условий не было, но:
perl -pe "s/esf_invoiceContainer/esf:invoiceContainer/g" <in.xml >out.xml 110Мб файл на внешнем USB2 диске - примерно 6 секунд. |
|||
8
Kudryashka
12.05.16
✎
06:35
|
(5),(7) Спасибо большое!
Сделала так: ТекстДок = СоздатьОбъект("Текст"); ТекстДок.Открыть(НаимФайла); стр1 = ТекстДок.ПолучитьСтроку(2); стр2 = СтрЗаменить(Стр1,"esf_invoiceContainer","esf:invoiceContainer"); ТекстДок.ЗаменитьСтроку(2,Стр2); ТекстДок.Записать(НаимФайла); Получила то, что надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |