用XMLDocument怎么样生成如下格式的XML文件?
<?xml version="1.0" encoding="GBK" ?>
<xml xmlns:s="表结构标识" xmlns:a="属性标识" xmlns:rs="数据项目" xmlns:z="行记录">
<rs:data>
<rs:Table id="A1">
<z:row A00="42B73726-7E3A-483A-B8F1-1B2E9149AAA7" A02="张三" A03="男" A04="汉族" A05A="大学"/>
<z:row A01="5A268CBE-30C4-477E-80A6-B4C70022C064" A02="李四" A03="男" A04="布依族" A05A="大学"/>
</rs:Table>
<rs:Table id="A2">
<z:row A01="42B73726-7E3A-483A-B8F1-1B2E9149AAA7" A20="" A21="" A22="" A23=""/>
<z:row A00="5A268CBE-30C4-477E-80A6-B4C70022C064" A20="" A21="" A22="" A23=""/>
</rs:Table>
</rs:data>
</xml> 从数据库多表导出生成以上XML。还有一点就是原数据库的ID是数字,怎么变成42B73726-7E3A-483A-B8F1-1B2E9149AAA7格式的字符串?
谢谢了。
<?xml version="1.0" encoding="GBK" ?>
<xml xmlns:s="表结构标识" xmlns:a="属性标识" xmlns:rs="数据项目" xmlns:z="行记录">
<rs:data>
<rs:Table id="A1">
<z:row A00="42B73726-7E3A-483A-B8F1-1B2E9149AAA7" A02="张三" A03="男" A04="汉族" A05A="大学"/>
<z:row A01="5A268CBE-30C4-477E-80A6-B4C70022C064" A02="李四" A03="男" A04="布依族" A05A="大学"/>
</rs:Table>
<rs:Table id="A2">
<z:row A01="42B73726-7E3A-483A-B8F1-1B2E9149AAA7" A20="" A21="" A22="" A23=""/>
<z:row A00="5A268CBE-30C4-477E-80A6-B4C70022C064" A20="" A21="" A22="" A23=""/>
</rs:Table>
</rs:data>
</xml> 从数据库多表导出生成以上XML。还有一点就是原数据库的ID是数字,怎么变成42B73726-7E3A-483A-B8F1-1B2E9149AAA7格式的字符串?
谢谢了。
FileName:=ExtractFileDir(Application.ExeName)+'\my.xml';
ADoc:=TNativeXml.CreateName('根结点');
Root¡±µÄXML¶ÔÏó
try
ADOC.ExternalEncoding := seUTF8;
ADoc.Declaration.Encoding:='gb2312';
ADoc.XmlFormat:=xfReadable;
ADoc.Root.WriteAttributeString('Root','下属结点');
ANode := ADoc.Root.NodeNew('Record');
ANode.WriteAttributeString('AAAAA','ccccc');
ANode.WriteAttributeString('BBBBB','ddddd');
ANode.WriteString('First','www.sÖйúina.com');
ANode.WriteString('Second','192.1Öйú68.1.1');
Edit1.Text:=ANode.Nodes[0].Value;
Edit2.Text:=ANode.Nodes[1].ValueUnicode;
ADoc.SaveToFile(FileName);
Memo1.Lines.Text:=ADOc.WriteToString;
finally
ADoc.Free;
end;
try
xmlDoc.Active := True;
xmlDoc.Version := '1.0';
xmlDoc.Encoding := 'GBK';
aNode := xmlDoc.AddChild( 'xml');
aNode.SetAttribute('xmlns:s','表结构标识');
aNode.SetAttribute('xmlns:a','属性标识');
aNode.SetAttribute('xmlns:rs','数据项目');
aNode.SetAttribute('xmlns:z','行记录');
aNode := aNode.AddChild('rs:data');
aNode := aNode.AddChild('rs:Table');
aNode.SetAttribute('id','A1');
while not Eof do
begin
aNode := aNode.AddChild('z:row');
for i:=0 to DataM.ADOQuery1.Fields.Count-1 do
begin
aNode.SetAttribute(''+DataM.ADOQuery1.Fields [i].DisplayName+'',''+DataM.ADOQuery1.Fields[i].asstring+'');
end;
aNode.PreviousSibling;
next
end;
//Save to XML File
xmlDoc.SaveToFile( 'c:\test.xml ');
finally
xmlDoc := nil;
end; 这样的结果不太正常,记录在z:row的下加子节点,怎么样才能写完一个后指向上一节点?aNode.PreviousSibling不管用