我数据库表中某字段的值是类似于xml文档形式,如:
<?xml version="1.0" encoding="UTF-8"?>
<record>
<ID>659825</ID>
<Type>11</Type>
<Name>张三</Name>
<recordType>2</recordType>
</record>现程序想循环读取所有符合条件的该字段的值,用xmldocument处理,结果输出到html文件或者stringgrid
不知道该怎么写了,想到了用Tblodstream,但xml编码似乎出了问题,下面是简单的设想if con.Connected then
begin
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select content from mem_event where uniqueID=:id');
Parameters.ParamByName('id').Value:=Trim(edt1.Text);
Open;
stream:= TADOblobStream.Create(Tblobfield(qry1.FieldByName('content')),bmRead);
stream.Position:=0;
xmldcmnt1.LoadFromStream(stream);
这样会出错,错误提示大约是说流中有汉字,不能识别
<?xml version="1.0" encoding="UTF-8"?>
<record>
<ID>659825</ID>
<Type>11</Type>
<Name>张三</Name>
<recordType>2</recordType>
</record>现程序想循环读取所有符合条件的该字段的值,用xmldocument处理,结果输出到html文件或者stringgrid
不知道该怎么写了,想到了用Tblodstream,但xml编码似乎出了问题,下面是简单的设想if con.Connected then
begin
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select content from mem_event where uniqueID=:id');
Parameters.ParamByName('id').Value:=Trim(edt1.Text);
Open;
stream:= TADOblobStream.Create(Tblobfield(qry1.FieldByName('content')),bmRead);
stream.Position:=0;
xmldcmnt1.LoadFromStream(stream);
这样会出错,错误提示大约是说流中有汉字,不能识别
你好,能说下具体的控件吗?我用的是D7,我在indymisc里面看到有IdEncoderMIME,IdEncoderUUE,IdEncoderXXE,具体到我这问题上该用哪个,是字段的内容保存到流,再进行base64编码吗?相关的decoder函数并没发现返回值是流的,是否还在中转一下?恳请万忙中给予答复,顺谢!
if con1.Connected then
begin
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select content from mem_event where uniqueID=:id');
Parameters.ParamByName('id').Value:=Trim(edt1.Text);
Open;
rstream:= TADOblobStream.Create(Tblobfield(qry1.FieldByName('content')),bmRead);
rstream.Position:=0;
dstream:=Tmemorystream.Create;
EncodeStream(rstream,dstream);
con2.Position:=0;
xmldcmnt1.LoadFromStream(con2);
这样会出错,说文档顶层存在无效内容
不过要把
<?xml version="1.0" encoding="UTF-8"?>
改成
<?xml version="1.0" encoding="GB2312"?>
应该就可以了
存放xml字符串的字段是什么类似,如果是varchar(xxx),就直接用Tstringstream好了