XML操作

 

procedure  TForm1.btnDat2XmlClick(Sender: TObject);
var
  XMLDoc: TXMLDocument;
  Node1: IXMLNode;
  Node2: IXMLNode;
  MyStream: TMemoryStream;
  i: integer;
begin
  
if  FileExists( ' .\GoodsSale_Tw.dat ' then   begin
    XMLDoc :
=  TXMLDocument.Create( nil );
    XMLDoc.Active :
=  True;
    XMLDoc.Version :
=   ' 1.0 ' ;
    XMLDoc.Encoding :
=   ' GB2312 ' ;
    XMLDoc.Options :
=  [doNodeAutoCreate, doNodeAutoIndent, doAttrNull, doAutoPrefix, doNamespaceDecl];
    XMLDoc.DocumentElement :
=  XMLDoc.CreateNode( ' table ' );
    myStream :
=  TMemoryStream.Create;
    myStream.LoadFromFile(
' .\GoodsSale_Tw.dat ' );
    Count :
=  (myStream.Size  -   40 div   10 ;
    
// myStream.ReadBuffer(Head[ 0 ],  10 );
    MyStream.Position :
=   10 ;
    
for  i : =   0   to  Count  -   1   do
    
begin
      new(Pgshop);
      MyStream.Read(Pgshop^, sizeof(gshop_info));
      Node1 :
=  XMLDoc.DocumentElement;
      Node2 :
=  Node1.AddChild( ' row ' );
      
if  ((i  +   1 mod   2 <>   0   then   begin
        Node2.SetAttributeNS(
' 大类 ' '' , Pgshop^.a1  xor  $ 72 );
        Node2.SetAttributeNS(
' 位置 ' '' , Pgshop^.a2  xor  $ 67 );
        Node2.SetAttributeNS(
' 物品ID ' '' , Pgshop^.a3  xor  $AA13);
        Node2.SetAttributeNS(
' 折叠数量 ' '' , Pgshop^.a5  xor  $ 86 );
        Node2.SetAttributeNS(
' 价格 ' '' , Pgshop^.a6  xor  $DFB0);
        Node2.SetAttributeNS(
' 功能1 ' '' , Pgshop^.a8  xor  $C2);
        Node2.SetAttributeNS(
' 功能2 ' '' , Pgshop^.a9  xor  $C8);
        Node2.SetAttributeNS(
' 标识 ' '' , Pgshop^.a10  xor  $9D);
      
end   else   begin
        Node2.SetAttributeNS(
' 大类 ' '' , Pgshop^.a1  xor  $4E);
        Node2.SetAttributeNS(
' 位置 ' '' , Pgshop^.a2  xor  $B0);
        Node2.SetAttributeNS(
' 物品ID ' '' , Pgshop^.a3  xor  $D103);
        Node2.SetAttributeNS(
' 折叠数量 ' '' , Pgshop^.a5  xor  $BC);
        Node2.SetAttributeNS(
' 价格 ' '' , Pgshop^.a6  xor  $ 8E05 );
        Node2.SetAttributeNS(
' 功能1 ' '' , Pgshop^.a8  xor  $ 07 );
        Node2.SetAttributeNS(
' 功能2 ' '' , Pgshop^.a9  xor  $ 92 );
        Node2.SetAttributeNS(
' 标识 ' '' , Pgshop^.a10  xor  $ 80 );
      
end ;
    
end ;
    
// myStream.ReadBuffer(LastRecord,  10 );
    
// myStream.ReadBuffer(Bottom[ 0 ],  20 );
    XMLDoc.SaveToFile(
' .\GoodsSale_Tw.xml ' );
    XMLDoc.Free;
    myStream.Free;
  
end ;
end ;

procedure  TForm1.btnXml2DatClick(Sender: TObject);
var
  XMLDoc: TXMLDocument;
  Node, Node1: IXMLNode;
  MyStream: TMemoryStream;
  i, Count: integer;
begin
  
if  FileExists( ' .\GoodsSale_Tw.xml ' then   begin
    XMLDoc :
=  TXMLDocument.Create(Application);
    XMLDoc.LoadFromFile(
' .\GoodsSale_Tw.xml ' );
    XMLDoc.Active :
=  True;
    Node :
=  XMLDoc.DocumentElement;
    Count :
=  Node.ChildNodes.Count;
    myStream :
=  TMemoryStream.Create;
    myStream.Write(Head[
0 ], Length(Head));
    
for  i : =   0   to  Count  -   1   do   begin
      Node1 :
=  XMLDoc.DocumentElement.ChildNodes[i];
      new(Pgshop);
      
if  ((i  +   1 mod   2 <>   0   then   begin
        Pgshop^.a1 :
=  Byte(StrToInt(Node1.Attributes[ ' 大类 ' ]))  xor  $ 72 ;
        Pgshop^.a2 :
=  Byte(StrToInt(Node1.Attributes[ ' 位置 ' ]))  xor  $ 67 ;
        Pgshop^.a3 :
=  StrToInt(Node1.Attributes[ ' 物品ID ' ])  xor  $AA13;
        Pgshop^.a5 :
=  Byte(StrToInt(Node1.Attributes[ ' 折叠数量 ' ]))  xor  $ 86 ;
        Pgshop^.a6 :
=  StrToInt(Node1.Attributes[ ' 价格 ' ])  xor  $DFB0;
        Pgshop^.a8 :
=  Byte(StrToInt(Node1.Attributes[ ' 功能1 ' ]))  xor  $C2;
        Pgshop^.a9 :
=  Byte(StrToInt(Node1.Attributes[ ' 功能2 ' ]))  xor  $C8;
        Pgshop^.a10 :
=  Byte(StrToInt(Node1.Attributes[ ' 标识 ' ]))  xor  $9D;
      
end   else   begin
        Pgshop^.a1 :
=  Byte(StrToInt(Node1.Attributes[ ' 大类 ' ]))  xor  $4E;
        Pgshop^.a2 :
=  Byte(StrToInt(Node1.Attributes[ ' 位置 ' ]))  xor  $B0;
        Pgshop^.a3 :
=  StrToInt(Node1.Attributes[ ' 物品ID ' ])  xor  $D103;
        Pgshop^.a5 :
=  Byte(StrToInt(Node1.Attributes[ ' 折叠数量 ' ]))  xor  $BC;
        Pgshop^.a6 :
=  StrToInt(Node1.Attributes[ ' 价格 ' ])  xor  $ 8E05 ;
        Pgshop^.a8 :
=  Byte(StrToInt(Node1.Attributes[ ' 功能1 ' ]))  xor  $ 07 ;
        Pgshop^.a9 :
=  Byte(StrToInt(Node1.Attributes[ ' 功能2 ' ]))  xor  $ 92 ;
        Pgshop^.a10 :
=  Byte(StrToInt(Node1.Attributes[ ' 标识 ' ]))  xor  $ 80 ;
      
end ;
      myStream.Write(Pgshop^, SizeOf(gshop_info));
    
end ;
    myStream.Write(LastRecord[
0 ], Length(LastRecord));
    myStream.Write(Bottom[
0 ], Length(Bottom));
    myStream.SaveToFile(
' .\GoodsSale_Tw1.dat ' );
    myStream.Free;
  
end
end ;

 

转载于:https://www.cnblogs.com/jxgxy/archive/2009/07/10/1520447.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值