Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];
Внизвопрос про XML Найти похожие ветки
← →
vegarulez © (2008-12-17 14:36) [0]Добрый день всем мастерам!
Пытаюсь разобраться с 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. потому как, этот кусочек кода работать не хотит.. убираю его и всё работает. Помогите.
← →
Медвежонок Пятачок © (2008-12-17 14:55) [1]В файле MSXML_TLB.pas описаны все интерфейсы, константы и соклассы COM-сервера.
msxml2_tlb
← →
vegarulez © (2008-12-18 06:51) [2]да, но какую версию лучше импортировать?
Project -> Import type library -> msxml4.dll -> unit MSXML2_TLB;
4-ую?
а то у меня 2,2.6,3.0,4.0,5.0...
4.0?
← →
vegarulez © (2008-12-18 06:52) [3]да... понял 4.0.
← →
vegarulez © (2008-12-18 06:55) [4]добавил в проект. прописал в юзес, но ошибка то осталась... :(
как быть?
← →
Медвежонок Пятачок © (2008-12-18 09:25) [5]как быть?
продолжать скрывать программный код и текст ошибки.
← →
Медвежонок Пятачок © (2008-12-18 09:44) [6]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);
← →
vegarulez © (2008-12-18 09:49) [7]Ошибка это действие невозможно выполнить для узла типа 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:56) [8]атрибуты добавляются в список атрибутов методом setnameditem, а не чайлдом к ноду
← →
vegarulez © (2008-12-22 10:32) [9]ок.
подскажи как добавить к формируемому документу строку
<?xml version="1.0" encoding="utf-8"?>
чот нигде немогу найти.
← →
Медвежонок Пятачок © (2008-12-22 10:34) [10][6]
← →
vegarulez © (2008-12-22 10:59) [11]аха сделал [6]
заменив только
var xdoc : IXMLDOMDocument2
на
var xdoc : IXMLDOMDocument
и в месаге он мне пишет
<?xml version="1.0"?>
<root attr1="value"/>
encoding`а нет в сообщении. Он же по идее должен тоже показываться. или это инструкция не отображается, а используется для отображения. но ведь документ- по сути текст и отображается как текст - значит он должен быть.
← →
Медвежонок Пятачок © (2008-12-22 11:05) [12]его там не будет пока тело документа не будет сериализовано.
ибо пока документ в памяти нет никакой разницы что там за кодировка.
← →
Медвежонок Пятачок © (2008-12-22 11:08) [13]тем более, что encoding="utf-8" это не кодировка, а транспортное представление. то есть способ записи документа на какой-то носитель.
← →
vegarulez © (2008-12-22 11:17) [14]ну по сути мне и нужно сформировать документ и отправить его по HTTP.
Но прежде чем отправить нужно же указать что за кодировка. как это посмотреть...
Я думал...
что эти параметры разбираются на сервере, для правильного отображения и разбора документа сервером, т.е. текстового представления данных которые туда пришли.
т.е. на клиенте просто формируется текстовый набор...
оказывается не прав.
← →
Медвежонок Пятачок © (2008-12-22 11:19) [15]сохрани документ в файл или поток. иными словами на какое-нибудь устройство.
если же делать writeln(doc.xml) то инструкции не появится.
← →
vegarulez © (2008-12-26 10:41) [16]Ок. А как это всё передать теперь по HTTPS?
Пробую просто как тестовое сообщение методом POST через TidHttp, но походу так передавать XML низя, потому как для авторизации логин пароль в теле сообщения храняться, а не в экстрахедерсах допустим.
← →
Медвежонок Пятачок © (2008-12-26 10:45) [17]если по https, то какая разница?
логин и пароль в узлах/атрибутах документа все равно никто не увидит кроме тебя и кроме сервера
← →
vegarulez © (2008-12-26 10:49) [18]я опечатался...
Пробую просто как теКстовое сообщение методом POST
т.е. ты имеешь ввиду, его можно так передавать? ну просто как текстовую строку(впринципе там же параметры разбиты <> </>), так же как POST запрос в обычном HTTP
← →
Медвежонок Пятачок © (2008-12-26 10:54) [19]а какие сомнения?
заголовок, контент-ленс + контент:
http://www.cbr.ru/scripts/XML_daily.asp
← →
vegarulez © (2009-01-14 08:03) [20]спасибо за ссыль. давно искал где бы брать он-лайн эти данные.
ну раз всё также как и в обычном POST, то сомнения все развеяны - буду поробовать.
У меня сечас ругань идёт на SSL... не могу понять в чём дело.
← →
vegarulez © (2009-01-16 14:52) [21]Подскажи в чём может быть дело, и как проверить реальную ошибку?
У меня вылазиет ошибка Error connecting with SSL код ошибки 0.
параметры Ssl у меня такие
MaxLineAction: maException
MaxLineLength: 16384
RecvBufferSize: 32768
SendBufferSize: 32768
TIdSSLOptions.Method: sslvSSLv23
TIdSSLOptions.Mode: sslmUnassigned
Какие параметры сервера мне нужно знать о правильном формировании параметров клиента?
← →
Медвежонок Пятачок © (2009-01-16 14:59) [22]для начала я бы взял самые последние исправленные ssl библиотеки.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.007 c