![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос про XML [D7, XP]
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.