Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вопрос про XML [D7, XP]


Страницы:   1 2

vegarulez ©   (2008-12-17 14:36:00) 

Добрый день всем мастерам!
Пытаюсь разобраться с XML...
тут с примерчиком столкнулся, чот не работает и не могу понять почему...
http://www.codenet.ru/progr/delphi/stat/Using-XML/
делаю пример procedure TThread1.HeaderCreate(Sender: Tobject);

у меня ошибка выходит вот в этом месте

attr := Doc.createAttribute ( 'Id ', ' Order');

//заменил Att на attr, т.к. там наверно очепятка

createAttribute на входе принимает 1 параметр, а не 2 - поэтому выдаёт ошибку, если у него остваить 1 параметр, то ошибку вызывает уже следующаяя строка

Node.appendChild(attr);

подскажите как правильно сделать, чтоб примерчик заработал.
а то не могу понять чем, тогда отличается createTextNode от createAttribute. потому как, этот кусочек кода работать не хотит.. убираю его и всё работает. Помогите.


Медвежонок Пятачок   (2009-01-16 14:59:00) [1]

для начала я бы взял самые последние исправленные ssl библиотеки.


vegarulez   (2009-01-16 14:52:00) [2]

Подскажи в чём может быть дело, и как проверить реальную ошибку?
У меня вылазиет ошибка Error connecting with SSL  код ошибки 0.
параметры Ssl у меня такие

MaxLineAction: maException
MaxLineLength: 16384
RecvBufferSize: 32768
SendBufferSize: 32768

TIdSSLOptions.Method: sslvSSLv23
TIdSSLOptions.Mode: sslmUnassigned

Какие параметры сервера мне нужно знать о правильном формировании параметров клиента?


vegarulez   (2009-01-14 08:03:00) [3]

спасибо за ссыль. давно искал где бы брать он-лайн эти данные.
ну раз всё также как и в обычном POST, то сомнения все развеяны - буду поробовать.
У меня сечас ругань идёт на SSL... не могу понять в чём дело.


Медвежонок Пятачок   (2008-12-26 10:54:00) [4]

а какие сомнения?

заголовок, контент-ленс + контент:

http://www.cbr.ru/scripts/XML_daily.asp


vegarulez   (2008-12-26 10:49:00) [5]

я опечатался...

Пробую просто как теКстовоесообщение методом POST

т.е. ты имеешь ввиду, его можно так передавать? ну просто как текстовую строку(впринципе там же параметры разбиты <> </>), так же как POST запрос в обычном HTTP


Медвежонок Пятачок   (2008-12-26 10:45:00) [6]

если по https, то какая разница?
логин и пароль в узлах/атрибутах документа все равно никто не увидит кроме тебя и кроме сервера


vegarulez   (2008-12-26 10:41:00) [7]

Ок. А как это всё передать теперь по HTTPS?
Пробую просто как тестовое сообщение методом POST через TidHttp, но походу так передавать XML низя, потому как для авторизации логин пароль в теле сообщения храняться, а не в экстрахедерсах допустим.


Медвежонок Пятачок   (2008-12-22 11:19:00) [8]

сохрани документ в файл или поток. иными словами на какое-нибудь устройство.

если же делать writeln(doc.xml) то инструкции не появится.


vegarulez   (2008-12-22 11:17:00) [9]

ну по сути мне и нужно сформировать документ и отправить его по HTTP.
Но прежде чем отправить нужно же указать что за кодировка. как это посмотреть...

Я думал...
что эти параметры разбираются на сервере, для правильного отображения и разбора документа сервером, т.е. текстового представления данных которые туда пришли.
т.е. на клиенте просто формируется текстовый набор...
оказывается не прав.


Медвежонок Пятачок   (2008-12-22 11:08:00) [10]

тем более, что encoding="utf-8" это не кодировка, а транспортное представление. то есть способ записи документа на какой-то носитель.


Медвежонок Пятачок   (2008-12-22 11:05:00) [11]

его там не будет пока тело документа не будет сериализовано.
ибо пока документ в памяти нет никакой разницы что там за кодировка.


vegarulez   (2008-12-22 10:59:00) [12]

аха сделал [6]
заменив только
var xdoc : IXMLDOMDocument2
на
var xdoc : IXMLDOMDocument

и в месаге он мне пишет
<?xml version="1.0"?>
<root attr1="value"/>

encoding`а нет в сообщении. Он же по идее должен тоже показываться. или это инструкция не отображается, а используется для отображения. но ведь документ- по сути текст и отображается как текст - значит он должен быть.


Медвежонок Пятачок   (2008-12-22 10:34:00) [13]

[6]


vegarulez   (2008-12-22 10:32:00) [14]

ок.
подскажи как добавить к формируемому документу строку
<?xml version="1.0" encoding="utf-8"?>
чот нигде немогу найти.


Медвежонок Пятачок   (2008-12-18 09:56:00) [15]

атрибуты добавляются в список атрибутовметодом setnameditem, а не чайлдом к ноду


vegarulez   (2008-12-18 09:49:00) [16]

Ошибка это действие невозможно выполнить для узла типа ATTRIBUTE
происходит на строке  Node.appendChild(attr);
вот код примерчика, который пытаюсь сделать, ссылку на который приводил выше.

procedure TForm1.Button2Click(Sender: TObject);
var
 // объявление сокласса, необходим для создания
 coDoc        : CoDomDocument ;
 // объекта XMLDomDocument
 Doc          : DomDocument ;
 // объявление объектов DOMElement
 r            : IXMLDOMElement;
 Node         : IXMLDOMElement;
 //                     DOMText
 txt          : IXMLDOMText;                
 //                     DOMAttribute
 attr         : IXMLDOMAttribute;
begin

 // создание документа DOM
 Doc:=coDoc.Create;
 // установка синхронного режима обработки
 Doc.Set_async(false);
 // начальная инициация DOM документа
 Doc.LoadXML('<Header/>');
 // получение адреса корневого элемента
 r:=Doc.Get_documentElement;                

 // создание DOMElement (таг <Sender>)
 Node := Doc.createElement ( 'Sender');        
 // создание текстового узла 'ООО "Тайфун"'
 txt := Doc.createTextNode( 'ООО "Тайфун"');  
 //  присвоение узлу <Sender> значение
 // текстового узла 'ООО "Тайфун"'
 Node.appendChild(txt);                        
                                               
 // добавление элемента <Sender> в корень документа как дочернего
 r.appendChild(Node);                          

 // аналогичные операции для тага <From>
 Node := Doc.createElement ( 'From');          
 
 txt := Doc.createTextNode( ' http://tayfun.ru/xml/default.asp');
 Node.appendChild(txt);
 r.appendChild(Node);

 // аналогичные операции для тага <To>
 Node := Doc.createElement ( 'To');            
 txt := Doc.createTextNode( ' http://irbis.ru');
 Node.appendChild(txt);
 r.appendChild(Node);

 // создание DOMElement ()
 Node := Doc.createElement ( 'TypeDocument');
 // создание узла XMLDOMAttribute
 attr := Doc.createAttribute ( 'Id');
 //    <TypeDocument Id="Order"/>
 Node.appendChild(attr);
 r.appendChild(Node);
 Memo1.Text:=r.xml;

end;


Медвежонок Пятачок   (2008-12-18 09:44:00) [17]

var xdoc : IXMLDOMDocument2; iRoot : IXMLDomNode;
begin
xdoc := CoDomDocument.Create;
xdoc.appendChild(xdoc.createProcessingInstruction('xml','version="1.0" encoding="windows-1251"'));
iRoot := xdoc.appendChild(xdoc.createElement('root'));
iRoot.attributes.setNamedItem(xdoc.createAttribute('attr1')).nodeValue := 'value';
ShowMessage(xdoc.xml);


Медвежонок Пятачок   (2008-12-18 09:25:00) [18]

как быть?
продолжать скрывать программный код и текст ошибки.


vegarulez   (2008-12-18 06:55:00) [19]

добавил в проект. прописал в юзес, но ошибка то осталась... :(
как быть?


vegarulez   (2008-12-18 06:52:00) [20]

да... понял 4.0.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо