void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientDataSet1->Open();
ClientDataSet1->SaveToFile(ExtractFilePath(Application->ExeName)+"local.xml",dfXML);
ClientDataSet1->Close();
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//myXML为拖放在Form1上的一个XMLDocument控件
myXML->Active=false;
myXML->FileName=ExtractFilePath(Application->ExeName)+"local.xml";
myXML->Active=true;
}
先点击Button1,将ClientDataSet1中的数据存为一个XML文件,然后,再单点Button2,此时弹出错误提示:An invalid character was found in text content.
请问如何解决?开发环境:BCB6,系统为三层结构,数据库为Interbase6.5。
注:如果打开保存的XML文件,并在开头手工添加“encoding="gb2312"”并保存后再点击Button2时则一切正常。
可问题是不可能每次从ClientDataSet1中保存为XML文件后都要手工打开添加编码类型啊。
6 个解决方案
#1
提示里面有无效字符,例如<,> />等等
替换一下吧
例如:
< 替换为<
>替换为>
这样就可以了.
替换一下吧
例如:
< 替换为<
>替换为>
这样就可以了.
#2
试试这样行不
myXML->Active=false;
myXML->LoadFromFile(WideString(ExtractFilePath(Application->ExeName)+"local.xml"
)); //根据地址载入XML文档信息
myXML->Encoding = "gb2312"; //XML文档编码
myXML->Active = true; //打开XML文档信息
myXML->Active=false;
myXML->LoadFromFile(WideString(ExtractFilePath(Application->ExeName)+"local.xml"
)); //根据地址载入XML文档信息
myXML->Encoding = "gb2312"; //XML文档编码
myXML->Active = true; //打开XML文档信息
#3
1、XML文件除编码问题(头部无encoding)之外,并无任何无效字符。
2、曾尝试过“myXML->Encoding="gb2312";”但报错:Access violation at ......
Encoding属性甚至连读取都要报错,不知什么原因啊
2、曾尝试过“myXML->Encoding="gb2312";”但报错:Access violation at ......
Encoding属性甚至连读取都要报错,不知什么原因啊
#4
另外,如果ClientDataSet1中的数据全部为英文或数值的话,则不需手工在XML文件的头部添加Encoding标志即能正常。而一旦数据中有一个汉字,就必须要手工添加Encoding标签,否则便报错:An invalid character was found in text content.
#5
求答案,自己顶一下
#6
读写都全部用TClientDataSet来做吧,这样可能不存在一些配置上的问题。
读:
pClientDataSet->Active=false;
pClientDataSet->FileName = "aaa.xml";
pClientDataSet->Active=true;
while (!pClientDataSet->Eof){
ComboBox1->Items->Add(pClientDataSet->FieldByName("ddd")->AsString);
pClientDataSet->Next();
}
pClientDataSet->Active=false;
读:
pClientDataSet->Active=false;
pClientDataSet->FileName = "aaa.xml";
pClientDataSet->Active=true;
while (!pClientDataSet->Eof){
ComboBox1->Items->Add(pClientDataSet->FieldByName("ddd")->AsString);
pClientDataSet->Next();
}
pClientDataSet->Active=false;
#1
提示里面有无效字符,例如<,> />等等
替换一下吧
例如:
< 替换为<
>替换为>
这样就可以了.
替换一下吧
例如:
< 替换为<
>替换为>
这样就可以了.
#2
试试这样行不
myXML->Active=false;
myXML->LoadFromFile(WideString(ExtractFilePath(Application->ExeName)+"local.xml"
)); //根据地址载入XML文档信息
myXML->Encoding = "gb2312"; //XML文档编码
myXML->Active = true; //打开XML文档信息
myXML->Active=false;
myXML->LoadFromFile(WideString(ExtractFilePath(Application->ExeName)+"local.xml"
)); //根据地址载入XML文档信息
myXML->Encoding = "gb2312"; //XML文档编码
myXML->Active = true; //打开XML文档信息
#3
1、XML文件除编码问题(头部无encoding)之外,并无任何无效字符。
2、曾尝试过“myXML->Encoding="gb2312";”但报错:Access violation at ......
Encoding属性甚至连读取都要报错,不知什么原因啊
2、曾尝试过“myXML->Encoding="gb2312";”但报错:Access violation at ......
Encoding属性甚至连读取都要报错,不知什么原因啊
#4
另外,如果ClientDataSet1中的数据全部为英文或数值的话,则不需手工在XML文件的头部添加Encoding标志即能正常。而一旦数据中有一个汉字,就必须要手工添加Encoding标签,否则便报错:An invalid character was found in text content.
#5
求答案,自己顶一下
#6
读写都全部用TClientDataSet来做吧,这样可能不存在一些配置上的问题。
读:
pClientDataSet->Active=false;
pClientDataSet->FileName = "aaa.xml";
pClientDataSet->Active=true;
while (!pClientDataSet->Eof){
ComboBox1->Items->Add(pClientDataSet->FieldByName("ddd")->AsString);
pClientDataSet->Next();
}
pClientDataSet->Active=false;
读:
pClientDataSet->Active=false;
pClientDataSet->FileName = "aaa.xml";
pClientDataSet->Active=true;
while (!pClientDataSet->Eof){
ComboBox1->Items->Add(pClientDataSet->FieldByName("ddd")->AsString);
pClientDataSet->Next();
}
pClientDataSet->Active=false;