晕了再不解决就没饭碗了救小弟一命!!!

来源:互联网  时间:2016/7/6 7:12:44

关于网友提出的“ 晕了再不解决就没饭碗了救小弟一命!!!”问题疑问,本网通过在网上对“ 晕了再不解决就没饭碗了救小弟一命!!!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 晕了再不解决就没饭碗了救小弟一命!!!
描述:

这个问题我之前问过:http://topic.csdn.net/u/20071029/16/fee853dc-8df8-4ad7-b6d2-36e3d9e7579d.html
可是现在又有了问题了,主要是TXMLDocument解析xml时提示:invalid unicode character
我的xml是这样的:
 地址为:http://home.sogua.com/index/service/wonderful30.aspx
 内容:
  


   
  ..
  ..         //中间省略了许多
   
  

我的代码是这样的:
  try
    MemoryStream:=TMemoryStream.Create ;
    Idhttp:=TIdhttp.Create(nil);
    try
      Idhttp.Get('http://home.sogua.com/index/service/wonderful30.aspx',MemoryStream);
      oXml := TXMLDocument.Create(self);
      //oxml.encoding:='utf-8';    此句报错了,说是内存地址越界了.不知道为什么会这样..??晕
      oXml.LoadFromStream(MemoryStream);
      oXml.Active:=true;
    except
      Application.MessageBox('解析xml失败:','提示',64);
    end;
  finally
    MemoryStream.Free ;
    Idhttp.Free ;
  end;
因为这个xml是动态改变的,encoding又是gb2312,出错提示是:  这里有无效的unicode character
我用oXml.encoding:='utf-8';它竟然报内存地址越界..我狂吐血了..为什么呀??不是这样改变xml的编码的?????
把xml的这句删除就可以解析了,但是每次xml都是动态改变的,所以有可能还有像上面出现的情况...
都急死了..
请各位恩人帮帮忙吧!!!

解决方案1:

uses
  msxml, idhttp;
procedure TForm1.FormCreate(Sender: TObject);
var
  FData: TStringStream;
  FIdhttp: TIdHTTP;
  oXml: IXMLDOMDocument;
  FNode: IXMLDOMNode;
begin
    FData:=TStringStream.Create('');
    FIdhttp:=TIdhttp.Create(nil);
    try
            FIdhttp.Get('http://home.sogua.com/index/service/wonderful30.aspx',FData);
            oXml   :=   CoDOMDocument.Create;
            //oxml.encoding:='utf-8';         此句报错了,说是内存地址越界了.不知道为什么会这样..??晕
            if not oXml.loadXML(FData.DataString) then
            Application.MessageBox('解析xml失败:','提示',64);
      Memo1.Text := FData.DataString;
      FNode := oXml.selectSingleNode('menu/file/@name');
      if Assigned(FNode) then
        Caption := FNode.nodeValue;
    finally
      FData.Free;
      FIdhttp.Free;
    end;
end;

呵呵,没问题阿,偶不喜欢用TXMLDocument,用IXMLDOMDocument替换了

上一篇Tstrings 取txt文件时的问题
下一篇两台打印机,如果用DELPHI写打印程序,不同按钮调不同打印机打
明星图片
相关文章
《 晕了再不解决就没饭碗了救小弟一命!!!》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)