操作nativexml控件
nativexml控件为第三方操作xml的控件
uses
NativeXmlOld;//引入旧的xml操作单元
procedure TForm1.Button1Click(Sender: TObject);
var
XmlDoc, tmpDoc: TNativeXmlOld;
Node, DNode, subNode : TXmlNodeOld;
nodeList : TXmlNodeList;
begin
XmlDoc := TNativeXmlOld.CreateName('Data');
XmlDoc.XmlFormat := xfoCompact;
nodeList := TXmlNodeList.Create;
//添加节点有以下几种方法:
Node := xmlDoc.Root.NodeNew('BasicDataNo');
subNode := TXmlNodeOld.CreateName(XmlDoc,'name');
DNode := TXmlNodeOld.CreateType(XmlDoc, xeoCData);
DNode.ValueDirect := sdAnsiToUtf8Old('王晓');
subNode.NodeAdd(DNode);
Node.NodeAdd(subNode);
subNode := TXmlNodeOld.CreateName(XmlDoc,'age');
DNode := TXmlNodeOld.CreateType(XmlDoc, xeoCData);
DNode.ValueDirect := '18';
subNode.NodeAdd(DNode);
Node.NodeAdd(subNode);
subNode := TXmlNodeOld.CreateName(XmlDoc,'sex');
DNode := TXmlNodeOld.CreateType(XmlDoc, xeoCData);
DNode.ValueDirect := 'male';
subNode.NodeAdd(DNode);
xmlDoc.Root.NodeAdd(subNode);
xmlDoc.Root.WriteString('qita', 'aaa');
xmlDoc.Root.NodeNew('Address').WriteString('City', sdAnsiToUtf8Old('广州'));
// ShowMessage(XmlDoc.WriteToString);
XmlDoc.SaveToFile('1.xml');
XmlDoc.Destroy;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
XmlDoc: TNativeXmlOld;
Node, SubNode: TXmlNodeOld;
nodeList : TXmlNodeList;
i, j : Integer;
begin
XmlDoc := TNativeXmlOld.CreateName('Data');
XmlDoc.LoadFromFile('1.xml');
ShowMessageFmt('%s',[sdUtf8ToAnsiOld(XmlDoc.Root.WriteToString)]);
//同一类别,多级节点
nodeList := TXmlNodeList.Create;
Node := XmlDoc.Root;
// ShowMessage(Node.ReadString('BasicDataNo'));
Node := XmlDoc.Root.FindNode('BasicDataNo');
ShowMessageFmt('%.2d',[Node.NodeCount]);
ShowMessage('name:'+sdUtf8ToAnsiOld(Node.FindNode('name').FindNode('CDATA').ValueDirect));
for i := 0 to Node.NodeCount - 1 do
begin
ShowMessageFmt('%s',[sdUtf8ToAnsiOld(Node.Nodes[i].WriteToString)]);
SubNode := Node.Nodes[i];
if SubNode.Name = 'name' then
begin
ShowMessage('name:'+sdUtf8ToAnsiOld(subNode.FindNode('CDATA').ValueDirect));
end;
if SubNode.Name = 'age' then
begin
// ShowMessage('age:'+sdUtf8ToAnsiOld(subNode.FindNode('CDATA').ValueDirect));
ShowMessage('age:'+sdUtf8ToAnsiOld(subNode.Nodes[0].ValueDirect));
end;
// ShowMessageFmt('%.2d',[subNode.NodeCount]);
// ShowMessageFmt('%s',[sdUtf8ToAnsiOld(subNode.Nodes[0].ValueDirect)]);
// ShowMessage(subNode.Nodes[0].FindNode('name').Nodes[0].ValueDirect);
// ShowMessage(subNode.Nodes[0]);
end;
//解析sex
Node := XmlDoc.Root.FindNode('sex');
// ShowMessage('sex:'+sdUtf8ToAnsiOld(Node.FindNode('CDATA').ValueDirect));
ShowMessage(Node.Name + ':'+sdUtf8ToAnsiOld(Node.FindNode('CDATA').ValueDirect));
Exit;
node.FindNodes('BasicDataNo', nodeList);
for i := 0 to nodeList.Count - 1 do
begin
for j := 0 to nodeList[i].TotalNodeCount - 1 do
begin
nodeList[i].Nodes[j].ReadString('name');
if nodeList[i].Nodes[j].FindNode('name') <> nil then
ShowMessage(nodeList[i].Nodes[j].FindNode('name').ValueDirect);
if nodeList[i].Nodes[j].FindNode('age') <> nil then
ShowMessage(nodeList[i].Nodes[j].FindNode('age').ValueDirect);
// ShowMessage(nodeList[i].Nodes[j].ValueDirect) ;
// ShowMessage(nodeList[i].Nodes[j].FindNode('name').ValueDirect);
end ;
// ShowMessage(sdUtf8ToAnsiOld(nodeList[i].ValueAsString)); //张三/李四/王五
end;
nodeList.Free;
XmlDoc.Destroy;
end;
浙公网安备 33010602011771号