![]() |
#1 |
NavAx
|
Здравствуйте.
Пытаюсь нарисовать в Navision xml-файлики, чтобы дальше скармливать их некоему порталу. Ориентируюсь на некий пример. В этом самом примере во многих тегах рисуется атрибут xmlns. Типа <?xml version="1.0" ?> <Заглавный элемент xmlns="блаблабла"> <DocumentID xmlns="другое блаблабла">ДокументИД</DocumentID> <DocumentDate>ДатаДокумента</DocumentDate> </Заглавный элемент> Но. Навыжн, увидев два элемента с названием xmlns ругается и кричит, что переменная xmlns определена более одного раза. Обзывать атрибут по-другому, типа xmlns1 - тогда и на выходе получается <?xml version="1.0" ?> <Заглавный элемент xmlns="блаблабла"> <DocumentID xmlns1="другое блаблабла">ДокументИД</DocumentID> <DocumentDate>ДатаДокумента</DocumentDate> </Заглавный элемент> что делать? как быть? Прошу прощения, если вопрос совсем тупой, я с xml первый раз в жизни общаюсь.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#2 |
Участник
|
А что за переменная xmlns? 'Microsoft XML, v3.0'.DOMDocument?
|
|
![]() |
#3 |
NavAx
|
В своем XMLPort я рисую эдакие хреновинки, которые называются в нем TagName, для них еще задается TagType, SourceType и DataSource
Чтобы нарисовать хреновинку типа <DocumentID xmlns="другое блаблабла">ДокументИД</DocumentID> я рисую Tag DocumentID с TagType Element, а под ним рисую Tag xmlns с TagType Atribute, внутри атрибута xmlns на триггере xmlns - Export::OnBeforePassVariable() пишу xmlns := 'другое блаблабла'; атрибут xmlns встречается больше одного раза хочу понять, как мне уговорить XMLPort нарисовать атрибут xmlns больше одного раза
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#4 |
Участник
|
Ок, понял... Мне кажется проще сделать используя Automation - DOMDocument, много примеров есть на mibuso.com
А XML портов отродясь я не делал ![]() |
|
![]() |
#5 |
NavAx
|
угу, если с портами так и не разберусь, попробую, спасибо
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#6 |
Участник
|
Я так понимаю везде стоит SourceType=Text? Тогда нужно сделать в DataSource разные название переменных, но при этом TagName будет одинаковый в двух местах.
|
|
![]() |
#7 |
Участник
|
А вот я таки нарисовал в NAV xml-порт, чтобы дальше скармливать файлики в 1С Битрикс. Проблема в следующем: чтобы всё нормально работало (UTF-8), необходимо созданный в NAV файл пересохранить в другом редакторе, который поставит в начале файла метку порядка байтов (EF BB BF). NAV можно как-то приучить делать это самостоятельно?
|
|
![]() |
#8 |
Участник
|
Цитата:
1. В Property's XML-порта в Encoding поставил UTF-8 2. При экспорте все техтовые+кодовые тэги конвертирую функцией ANSI2ASCII (т.е из конвертирую ANSI в ASCII). Ковертацию делаю в триггере OnBeforePassField(). |
|
![]() |
#9 |
Участник
|
Спасибо, помогло!
Сама функция есть вот здесь: http://www.mibuso.com/dlinfo.asp?FileID=287 |
|
![]() |
#10 |
Участник
|
Столкнулся с новой проблемой: длинные описания (заведомо многократно больше 250 символов). Перед тем как думать, как их подгрузить в NAV и хранить там - хотелось бы понять, можно ли вообще средствами NAV получить внутри xml-тега строку длиннее 250 знаков?
|
|
![]() |
#11 |
Участник
|
длиннее 1024 знаков конечно
|
|
![]() |
#12 |
Участник
|
http://forum.mazzy.ru/index.php?show...ndpost&p=54641 - тут обсуждался похожий вопрос. Только там аутомейшен используется.
Как вариант, создать несколько одинаковых тэгов и разбить в них описание. |
|
![]() |
#13 |
Участник
|
Цитата:
Как вариант, создать несколько одинаковых тэгов и разбить в них описание.
А в случае с аутомэйшеном - не упрусь ли я опять в 1024 знака, когда буду ему передавать переменную? Вот если бы аутомейшен умел переменные собирать - другое дело! |
|
![]() |
#14 |
Участник
|
Как раз с аутомейшеном создать/прочитать можно сколько угодно одинаковых тэгов. С xml-портами не работал, может они и один тэг прочитают.
|
|
![]() |
#15 |
Участник
|
Мне из Nav надо выгружать в битрикс. Что подразумевается под одинаковыми тегами?
Такая конструкция? Код: <Description>Длинная строка 1</Description> <Description>Длинная строка 2</Description> |
|
![]() |
#16 |
Участник
|
Цитата:
Сообщение от Васыо
![]() Мне из Nav надо выгружать в битрикс. Что подразумевается под одинаковыми тегами?
Такая конструкция? Код: <Description>Длинная строка 1</Description> <Description>Длинная строка 2</Description> ![]() Добавление текста большой длинный выглядит следующим образом Код: // создаем текстовый нод xmlNode4Text := xmlNode.ownerDocument.createTextNode('Bigtext'); // наполняем его FOR i:= 1 TO 100 DO xmlNode4Text.appendData('01234567890123456789'); // создаем родителя текстового нода xmlNode2:=xmlNode.ownerDocument.createNode('element','Bigtext',NameSpace); // связываем их xmlNode2.appendChild(xmlNode4Text); // добавляем родителя в документ xmlNode.appendChild(xmlNode2); Name DataType Subtype Length xmlNode Automation 'Microsoft XML, v6.0'.IXMLDOMNode xmlNode4Text Automation 'Microsoft XML, v6.0'.IXMLDOMText xmlNode2 Automation 'Microsoft XML, v6.0'.IXMLDOMNode |
|
![]() |
#17 |
Участник
|
Класс! А дальше, если, например, хранить описания в текстовых файлах, что-то типа этого?
Код: fFile.OPEN('C:\1.txt'); fFile.CREATEINSTREAM(iStream); tBigText.READ(iStream); tBigText.GETSUBTEXT(text1,1,1024); tBigText.GETSUBTEXT(text2,1025,1024); xmlNode4Text.appendData(text1+text2); |
|
![]() |
#18 |
Участник
|
Код: xmlNode4Text.appendData(text1+text2); так что правильней будет Код: tBigText.GETSUBTEXT(text1,1,1024); xmlNode4Text.appendData(text1); tBigText.GETSUBTEXT(text2,1025,1024); xmlNode4Text.appendData(text2); |
|
![]() |
#19 |
Участник
|
Вот решение вопроса с кодировкой, если кому вдруг понадобится: http://mibuso.com/dlinfo.asp?FileID=959
каждую строку придётся конвертировать: Код: text1 := StringConvert.CodepageConvert(text1); |
|