18.11.2010, 15:42 | #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 первый раз в жизни общаюсь.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
18.11.2010, 16:22 | #2 |
Участник
|
А что за переменная xmlns? 'Microsoft XML, v3.0'.DOMDocument?
|
|
18.11.2010, 17:04 | #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 больше одного раза
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
19.11.2010, 08:48 | #4 |
Участник
|
Ок, понял... Мне кажется проще сделать используя Automation - DOMDocument, много примеров есть на mibuso.com
А XML портов отродясь я не делал |
|
19.11.2010, 10:03 | #5 |
NavAx
|
угу, если с портами так и не разберусь, попробую, спасибо
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
10.12.2010, 13:33 | #6 |
Участник
|
Я так понимаю везде стоит SourceType=Text? Тогда нужно сделать в DataSource разные название переменных, но при этом TagName будет одинаковый в двух местах.
|
|
21.10.2011, 17:39 | #7 |
Участник
|
А вот я таки нарисовал в NAV xml-порт, чтобы дальше скармливать файлики в 1С Битрикс. Проблема в следующем: чтобы всё нормально работало (UTF-8), необходимо созданный в NAV файл пересохранить в другом редакторе, который поставит в начале файла метку порядка байтов (EF BB BF). NAV можно как-то приучить делать это самостоятельно?
|
|
21.10.2011, 21:32 | #8 |
Участник
|
Цитата:
1. В Property's XML-порта в Encoding поставил UTF-8 2. При экспорте все техтовые+кодовые тэги конвертирую функцией ANSI2ASCII (т.е из конвертирую ANSI в ASCII). Ковертацию делаю в триггере OnBeforePassField(). |
|
24.10.2011, 10:13 | #9 |
Участник
|
Спасибо, помогло!
Сама функция есть вот здесь: http://www.mibuso.com/dlinfo.asp?FileID=287 |
|
13.01.2012, 16:35 | #10 |
Участник
|
Столкнулся с новой проблемой: длинные описания (заведомо многократно больше 250 символов). Перед тем как думать, как их подгрузить в NAV и хранить там - хотелось бы понять, можно ли вообще средствами NAV получить внутри xml-тега строку длиннее 250 знаков?
|
|
13.01.2012, 17:05 | #11 |
Участник
|
длиннее 1024 знаков конечно
|
|
13.01.2012, 22:03 | #12 |
Участник
|
http://forum.mazzy.ru/index.php?show...ndpost&p=54641 - тут обсуждался похожий вопрос. Только там аутомейшен используется.
Как вариант, создать несколько одинаковых тэгов и разбить в них описание. |
|
16.01.2012, 18:03 | #13 |
Участник
|
Цитата:
Как вариант, создать несколько одинаковых тэгов и разбить в них описание.
А в случае с аутомэйшеном - не упрусь ли я опять в 1024 знака, когда буду ему передавать переменную? Вот если бы аутомейшен умел переменные собирать - другое дело! |
|
16.01.2012, 19:10 | #14 |
Участник
|
Как раз с аутомейшеном создать/прочитать можно сколько угодно одинаковых тэгов. С xml-портами не работал, может они и один тэг прочитают.
|
|
16.01.2012, 19:36 | #15 |
Участник
|
Мне из Nav надо выгружать в битрикс. Что подразумевается под одинаковыми тегами?
Такая конструкция? Код: <Description>Длинная строка 1</Description> <Description>Длинная строка 2</Description> |
|
16.01.2012, 20:52 | #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.01.2012, 12:42 | #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); |
|
17.01.2012, 12:50 | #18 |
Участник
|
Код: xmlNode4Text.appendData(text1+text2); так что правильней будет Код: tBigText.GETSUBTEXT(text1,1,1024); xmlNode4Text.appendData(text1); tBigText.GETSUBTEXT(text2,1025,1024); xmlNode4Text.appendData(text2); |
|
17.01.2012, 16:34 | #19 |
Участник
|
Вот решение вопроса с кодировкой, если кому вдруг понадобится: http://mibuso.com/dlinfo.asp?FileID=959
каждую строку придётся конвертировать: Код: text1 := StringConvert.CodepageConvert(text1); |
|