delphi筆記之nativeXml 轉


delphi筆記之nativeXml

 

 

使用 CreateName 建立可直接指定根節點的名稱
var
XmlDoc: TnativeXml;
Node:TxmlNode;

 

Begin

 

XmlDoc := TNativeXml.CreateName('Data');  //創建根節點的語法

 

  XmlDoc.XmlFormat := xfReadable;

 

 

添加節點有以下幾種方法:

 

 

Node:=xmlDoc.Root.NodeNew(‘BasicDataNo’);

 

Node.value:=’1’;

 

XmlDoc.Root.NodeNew(‘name’).value:=’sam’;

 

xmlDoc.Root.WriteString(‘sex’,’male);

 

 

 

xmlDoc.Root.NodeNew('Address').WriteString('City', '廣州');//<Address><City>廣州</City></Address>

 

 

 

還有可以創建相應類型的方法:WriteFloat()、WriteDateTime()、WriteHex()、WriteBool()...
 
Node:=xmlDoc.NodeNew(‘item’);
Node.writeInteger(‘age’,23);
xmlDoc.Root.NodeAdd(node);
 
 
XmlDoc.NodeNew('BasicData', [
   XmlDoc.NodeNewText('FirstName', 'John'),
   XmlDoc.NodeNewText('LastName', 'Doe'),       
 XmlDoc.NodeNewInt('Age', 26)
  ])

 

添加屬性:
  node := xml.Root.NodeNew('item'); 
  node.AttributeAdd('ID', '1'); 
  node.AttributeAdd('age', '11'); 
  node.Value := '張三'; 
 
  node := xml.NodeNewTextAttr('item', '張三', [xml.AttrText('ID', '1'), xml.AttrInt('age', 11)]); 
  xml.Root.NodeAdd(node); 
 
添加注釋:
  node := xml.NodeNewTextType('注釋名稱', '注釋內容', xeComment);
  xml.Root.NodeAdd(node);
添加CDATA內容
  node.NodeAdd(xml.NodeNewTextType('DataName', 'XXXXXXXXXXXX', xeCData));

 

NativeXml 讀取

 

 

NativeXml打開xml文本

 

Var

 

         Xml:TnativeXml;

 

Begin

 

         Xml:=TnativeXml.Create(nil);

 

         Xml.loadformFile(‘xml_file_path’);

 

End;

 

 

 

讀取declaration

 

  declaration: TsdDeclaration;

 

 declaration := xml.RootNodes[0] as TsdDeclaration;

 

  ShowMessageFmt('%s, %s', [declaration.Version, declaration.Encoding]);  //1.0, UTF-8

 

 

 

xml.RootNodes[1]代表根節點,與xml.Root相同
 
xml.Root.Name:根節點名稱
xml.Root.NodeCount:根節點子節點的總數
xml.Root.WriteToString讀取根節點下的所有內容
xml.Root[0]:第一個子節點
 
節點信息的讀取
node:TxmlNode;
node:=xml.Root[0];
node.name
node.value
node.Attributes[0].Name;
node.Attributes[0].Value;
node.Attributes[0].WriteToString
node.AttributeByName['ID'].Value
node.AttributeValueByName['ID']
 
 
  node := xml.Root; 
  ShowMessage(node.ReadString('item'));       //張三 
  ShowMessage(node.FindNode('item').Value);   //張三 
  ShowMessage(node.NodeByName('item').Value); //張三 
  //node.NodesByName(); 用法同 FindNodes 
 
  nodeList := TsdNodeList.Create(False); 
  node.FindNodes('item', nodeList); 
  for i := 0 to nodeList.Count - 1 do 
  begin 
    ShowMessage(nodeList[i].Value); //張三/李四/王五 
  end; 
  nodeList.Free; 
  // 
  for i := 0 to node.NodeCount - 1 do 
  begin 
    ShowMessage(node[i].Value);     //張三/李四/王五 
  end; 
 
 
其他操作:
插入、刪除
  xml.Root.NodeInsert(1, xml.NodeNewText('item', '趙六')); 
  xml.Root.NodeDelete(xml.Root.NodeCount - 1); 
 xml.Root.NodeRemove(xml.Root[0]); 
交換
xml.Root.NodeExchange(0, 1); 
提取:
  node := xml.Root.NodeExtract(xml.Root[1]); 
搜索與創建
node := xml.Root.NodeFindOrCreate('item'); 
Clear操作
node := xml.Root[0]; 
node.Clear; <item/> //清除節點內容
xml.Root.DeleteEmptyNodes; //清除空節點
xml.Root.Clear; <list/> //清除Root下的內容
xml.Clear; 將xml內容清除


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM