C++BUILDER 用native xml编写文件有关问题
C++BUILDER 用native xml编写文件问题
怎么在UTF-8的字符集下显示汉字,已经解决了,但是如果是这样应该怎么解决?
TNativeXml *ADoc;
TXmlNode *node;
ADoc = new TNativeXml("Root");
try
{
ADoc->XmlFormat = xfReadable;
ADoc->VersionString="1.0";
ADoc->ExternalEncoding=seUTF8;
ADoc->EncodingString="UTF-8";
node = ADoc->Root->NodeNew("Customer");
node->WriteAttributeString("Sex","男");// 就是这里!改为可以添加汉字属性
node->WriteWidestring("Name", WideString("乔丹"));
ADoc->SaveToFile("c:\\test.xml");
}
__finally
{
ADoc->Free();
}
我如果想在节点中添加汉字属性,一次加入多个属性,怎么实现? 效果:<Information name="张三",sex="男"/>
------最佳解决方案--------------------
//AttributeValueAsWidestring
------其他解决方案--------------------
不知道你这个是什么版本,,我这边用法是 node->AttributeValueByName["sex"] = "男";
以前用过一个老版本好像是 node->AttributeValueAsString[0] = "张三";
node->AttributeValueAsString[1] = "男";
------其他解决方案--------------------
VCL对象的Free方法只是为了兼容Delphi而存在,建议new出来的对象用delete来释放。
怎么在UTF-8的字符集下显示汉字,已经解决了,但是如果是这样应该怎么解决?
TNativeXml *ADoc;
TXmlNode *node;
ADoc = new TNativeXml("Root");
try
{
ADoc->XmlFormat = xfReadable;
ADoc->VersionString="1.0";
ADoc->ExternalEncoding=seUTF8;
ADoc->EncodingString="UTF-8";
node = ADoc->Root->NodeNew("Customer");
node->WriteAttributeString("Sex","男");// 就是这里!改为可以添加汉字属性
node->WriteWidestring("Name", WideString("乔丹"));
ADoc->SaveToFile("c:\\test.xml");
}
__finally
{
ADoc->Free();
}
我如果想在节点中添加汉字属性,一次加入多个属性,怎么实现? 效果:<Information name="张三",sex="男"/>
------最佳解决方案--------------------
//AttributeValueAsWidestring
void __fastcall TForm1::Button6Click(TObject *Sender)
{
TNativeXml *ADoc;
TXmlNode *node;
ADoc = new TNativeXml("Root");
try
{
ADoc->Utf8Encoded = true;
ADoc->XmlFormat = xfReadable;
ADoc->VersionString="1.0";
ADoc->ExternalEncoding=seUTF8;
ADoc->EncodingString="utf-8";
node = ADoc->Root->NodeNew("Customer");
node->WriteAttributeString("Sex","");// 就是这里!改为可以添加汉字属性
node->AttributeValueAsWidestring[0] ="男";
node->WriteWidestring("Name", WideString("乔丹"));
ADoc->SaveToFile("test.xml");
}
__finally
{
ADoc->Free();
}
}
------其他解决方案--------------------
不知道你这个是什么版本,,我这边用法是 node->AttributeValueByName["sex"] = "男";
以前用过一个老版本好像是 node->AttributeValueAsString[0] = "张三";
node->AttributeValueAsString[1] = "男";
------其他解决方案--------------------
VCL对象的Free方法只是为了兼容Delphi而存在,建议new出来的对象用delete来释放。