XML问题,请各位帮忙,高分!在线等待。。。。

sxd78 2003-03-31 04:30:20
<?xml version="1.0" encoding="gb2312" ?>
<XML>
<SMS>
<SequenceID>消息流水号</ SequenceID >
<ReturnCode>处理结果代号</ReturnCode>
<CooperationID>合作方编号</CooperationID>
<MessageCount>短信总条数</MessageCount>
<Message1>
<ContentType>B/C</ContentType>
<MsgLength>本短信数据长度</MsgLength>
<Tpudhi>0或1(二进制)</Tpudhi>
<Datacoding>数据编码(即DCS,0/4)</Datacoding>
<Content>信息内容</Content>
</Message1>
<Message2>
……(与Message1同)
</Message2>
……

</XML>
以上是xml格式,用HTTP响应格式,用delphi中哪的控件来接收,如何接收响应的数据?

...全文
25 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxd78 2003-04-01
  • 打赏
  • 举报
回复
文本信息是通过http协议得到的文本,存在字符串变量里
怎么处理
zhaojinghui 2003-03-31
  • 打赏
  • 举报
回复
这个例子中有对XML文档的读取方法和写方法!
参考一下吧!
zhaojinghui 2003-03-31
  • 打赏
  • 举报
回复
unit readxml;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;
type
TStudent = class {学生}
sex : string; //学生性别
name : string; //学生姓名
age : integer; //学生年龄
phone: string; //电话号码
end;
type
TForm1 = class(TForm)
InXMLDoc: TXMLDocument;
btread: TButton;
OutXMLDoc: TXMLDocument;
btwrite: TButton;
XMLDocument1: TXMLDocument;
Query1: TQuery;
procedure btreadClick(Sender: TObject);
procedure btwriteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ADOTable1CalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Root : IXMLNode; //指向XML根结点
Parent_Node: IXMLNode; //指向学生结点
Child_node : IXMLNode; //指向学生的子结点
Student : TStudent; //存单个学生信息
List : TList; //存学生列表
i : integer; //循环变量
implementation
{$R *.dfm}
procedure TForm1.btreadClick(Sender: TObject);
begin
List := TList.Create; //初始化列表
InXMLDoc.LoadFromFile('c:\Input.xml'); //调入Input.xml文件
Root := InXMLDoc.DocumentElement; //取XML文件的根结点,即“<学生花名册>”
Parent_Node := Root.ChildNodes.First; //使Parent_Node指向学生结点
while (Parent_Node <> nil) do //循环取多个学生,可再多加几个学生信息测试
begin
if (Parent_Node.NodeName = '学生') then //判断是否为学生结点
begin
Student := TStudent.Create; //新建一个学生的结构信息
Student.sex := Parent_Node.Attributes['性别']; //取学生的性别属性
Child_Node := Parent_Node.ChildNodes.First; //使Child_Node指向该学生的第一个子结点信息
while (Child_Node <> nil) do //循环取学生的各个子各点
begin
if (Child_Node.NodeName = '姓名') then //判断是否为姓名结点
Student.name := Child_Node.Text //取姓名结点的值,取于name字段中
else if (Child_Node.NodeName = '年龄') then //此行起后四行与前两行类似
Student.age := StrToInt(Child_Node.Text)
else if (Child_Node.NodeName = '电话') then
Student.phone := Child_Node.Text;
Child_Node := Child_Node.NextSibling; //顺序取下一个学生的子结点信息
end;
List.Add(Student);
end;
Parent_Node := Parent_Node.NextSibling; //顺序取下一个学生信息
end;
ShowMessage('Read over!');
btwrite.Enabled := True;
end;
procedure TForm1.btwriteClick(Sender: TObject);
begin
OutXMLDoc.Active := true; //激活OutXMLDoc,自动初始化空的XML文档
OutXMLDoc.Encoding := 'GB2312'; //设置字符集
Root := OutXMLDoc.AddChild('学生花名册'); //建根结点
for i := 0 to List.Count - 1 do //循环取各个学生信息
begin
Student := List.Items[i]; //顺序取一个学生信息
if (Student <> nil) then
begin
Parent_Node := Root.AddChild('学生'); //根结点后添加一个学生结点
Parent_Node.Attributes['性别'] := Student.sex; //给学生结点设置性别属性
Child_Node := Parent_Node.AddChild('姓名'); //学生结点后添加一个姓名结点
Child_Node.Text := Student.name; //设置姓名的文本值
Child_Node := Parent_Node.AddChild('年龄'); //此行起后四行与前两行类似
Child_Node.Text := IntToStr(Student.age);
Child_Node := Parent_Node.AddChild('电话');
Child_Node.Text := Student.phone;
end;
end;
OutXMLDoc.SaveToFile('c:\Output.xml'); //把组织好的XML文档存于Output.xml文件中
OutXMLDoc.Active := false; //钝化(关闭)OutXMLDoc
List.Free; //最后释放保存临时学生信息的列表
ShowMessage('Write over!');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
btread.Enabled := True;
btwrite.Enabled := False;
end;

procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin

end;

end.
zhaojinghui 2003-03-31
  • 打赏
  • 举报
回复
这是我写过的一个例子:
unit readxml;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;
type
TStudent = class {学生}
sex : string; //学生性别
name : string; //学生姓名
age : integer; //学生年龄
phone: string; //电话号码
end;
type
TForm1 = class(TForm)
InXMLDoc: TXMLDocument;
btread: TButton;
OutXMLDoc: TXMLDocument;
btwrite: TButton;
XMLDocument1: TXMLDocument;
Query1: TQuery;
procedure btreadClick(Sender: TObject);
procedure btwriteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ADOTable1CalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Root : IXMLNode; //指向XML根结点
Parent_Node: IXMLNode; //指向学生结点
Child_node : IXMLNode; //指向学生的子结点
Student : TStudent; //存单个学生信息
List : TList; //存学生列表
i : integer; //循环变量
implementation
{$R *.dfm}
procedure TForm1.btreadClick(Sender: TObject);
begin
List := TList.Create; //初始化列表
InXMLDoc.LoadFromFile('c:\Input.xml'); //调入Input.xml文件
Root := InXMLDoc.DocumentElement; //取XML文件的根结点,即“<学生花名册>”
Parent_Node := Root.ChildNodes.First; //使Parent_Node指向学生结点
while (Parent_Node <> nil) do //循环取多个学生,可再多加几个学生信息测试
begin
if (Parent_Node.NodeName = '学生') then //判断是否为学生结点
begin
Student := TStudent.Create; //新建一个学生的结构信息
Student.sex := Parent_Node.Attributes['性别']; //取学生的性别属性
Child_Node := Parent_Node.ChildNodes.First; //使Child_Node指向该学生的第一个子结点信息
while (Child_Node <> nil) do //循环取学生的各个子各点
begin
if (Child_Node.NodeName = '姓名') then //判断是否为姓名结点
Student.name := Child_Node.Text //取姓名结点的值,取于name字段中
else if (Child_Node.NodeName = '年龄') then //此行起后四行与前两行类似
Student.age := StrToInt(Child_Node.Text)
else if (Child_Node.NodeName = '电话') then
Student.phone := Child_Node.Text;
Child_Node := Child_Node.NextSibling; //顺序取下一个学生的子结点信息
end;
List.Add(Student);
end;
Parent_Node := Parent_Node.NextSibling; //顺序取下一个学生信息
end;
ShowMessage('Read over!');
btwrite.Enabled := True;
end;
sxd78 2003-03-31
  • 打赏
  • 举报
回复
文本信息存在字符串变量里呢
sxd78 2003-03-31
  • 打赏
  • 举报
回复
我收到的是文本信息,怎么配置本本与这个控件的关联呢?
zhaojinghui 2003-03-31
  • 打赏
  • 举报
回复
你是要读XML文件吗?
sxd78 2003-03-31
  • 打赏
  • 举报
回复
to zhaojinghui(撒哈拉之雨的悲伤)
如何用啊?我刚接触这个,有点发蒙.IP,port添在哪个属性啊!
zhaojinghui 2003-03-31
  • 打赏
  • 举报
回复
用XMLDocument

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧