操作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;

 

posted on 2014-10-09 22:06  wind的博客  阅读(451)  评论(0)    收藏  举报

导航