某个项目需要将数据保存为XML文件,但是BCB6没安装XMLDOC,想下载安装包也难找,于是就在网上查了些资料,不使用XMLDOC的情况下生成和保存XML文件。
包含头文件:
#include <XMLDoc.hpp>
#pragma link "xmlrtl.lib"
代码:
AnsiString gkstr = "";
gkstr = edtGkbh->Text.Trim();
if (gkstr != ""){
cxQry->SQL->Text = "select pmggmc,ysmc,rzsk,gkbh,wkgs,bpbh,fk,mz,bcdd,bzbz,"
"CONVERT(varchar(100),GETDATE(),11) as bzrq from ccck "
" with(nolock) where gkbh='"+gkstr+"' order by cast(bpbh as int)";
cxQry->Open();
cxQry->First();
for (int i=0;i<cxQry->RecordCount;i++){
//创建XML
_di_IXMLDocument xml= NewXMLDocument(L"1.0");
xml->Active= true;
xml->Options = xml->Options << doNodeAutoIndent;
_di_IXMLNode root = xml->AddChild("barcode");
//root->Attributes["version"]="1.0";
//root->Attributes["name"]="PathConfig";
//创建XML节点
root->AddChild("TemplateNumber");
root->AddChild("ProductName");
root->AddChild("ColorCode");
root->AddChild("ColorNumber");
root->AddChild("BatchNo");
root->AddChild("Quantity");
root->AddChild("ProductUnit");
root->AddChild("VolumeNumber");
root->AddChild("Breadth");
root->AddChild("Grammage");
root->AddChild("Composition");
root->AddChild("DateMark");
root->AddChild("OrderNumber");
root->AddChild("FirstRemark");
root->AddChild("Remark");
//对节点赋值
AnsiString str = "";
_di_IXMLNode node = root->ChildNodes->FindNode(WideString("TemplateNumber"));
str = "001";
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("ProductName"));
str = cxQrypmggmc->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("ColorCode"));
str = cxQryysmc->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("ColorNumber"));
str = cxQryrzsk->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("BatchNo"));
str = cxQrygkbh->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("Quantity"));
str = cxQrywkgs->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("ProductUnit"));
str = "KG";
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("VolumeNumber"));
str = cxQrybpbh->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("Breadth"));
str = cxQryfk->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("Grammage"));
str = cxQrymz->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("Composition"));
str = "";
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("DateMark"));
str = cxQrybzrq->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("OrderNumber"));
str = cxQrybcdd->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("FirstRemark"));
str = cxQrybzbz->AsString.Trim();
node->SetNodeValue(str);
node = root->ChildNodes->FindNode(WideString("Remark"));
str = "";
node->SetNodeValue(str);
//保存XML
xml->SaveToFile("config.xml");
//释放
delete xml;
cxQry->Next();
}
ShowMessage("XML文件生成完毕!");
}
生成的XML文件格式如下:
<?xml version="1.0"?>
<barcode>
<TemplateNumber>001</TemplateNumber>
<ProductName>32S棉2*2罗纹</ProductName>
<ColorCode>068#大红</ColorCode>
<ColorNumber>LC03939</ColorNumber>
<BatchNo>YZ019112331</BatchNo>
<Quantity>21.6</Quantity>
<ProductUnit>KG</ProductUnit>
<VolumeNumber>15</VolumeNumber>
<Breadth></Breadth>
<Grammage></Grammage>
<Composition></Composition>
<DateMark>19/12/07</DateMark>
<OrderNumber>YZ191123051</OrderNumber>
<FirstRemark>万邦A4</FirstRemark>
<Remark></Remark>
</barcode>