zoukankan      html  css  js  c++  java
  • TXMLDocument use case (Delphi)

    Description

    This example illustrates the basic operations on an XML document.

    Code

    procedure CreateDocument;
    const
      CFilename = 'file.xml';
    var
      LDocument: IXMLDocument;
      LNodeElement, NodeCData, NodeText: IXMLNode;
    begin
      LDocument := TXMLDocument.Create(nil);
      LDocument.Active := True;
     
      { Define document content. }
      LDocument.DocumentElement := LDocument.CreateNode('ThisIsTheDocumentElement', ntElement, '');
      LDocument.DocumentElement.Attributes['attrName'] := 'attrValue';
      LNodeElement := LDocument.DocumentElement.AddChild('ThisElementHasText', -1);
      LNodeElement.Text := 'Inner text.';
      NodeCData := LDocument.CreateNode('any characters here', ntCData, '');
      LDocument.DocumentElement.ChildNodes.Add(NodeCData);
      NodeText := LDocument.CreateNode('This is a text node.', ntText, '');
      LDocument.DocumentElement.ChildNodes.Add(NodeText);
     
      LDocument.SaveToFile(CFilename);
    end;
     
    procedure RetrieveDocument;
    const
      CFilename = 'file.xml';
      CAttrName = 'attrName';
      HTAB = #9;
    var
      LDocument: IXMLDocument;
      LNodeElement, LNode: IXMLNode;
      LAttrValue: string;
      I: Integer;
    begin
      LDocument := TXMLDocument.Create(nil);
      LDocument.LoadFromFile(CFilename);
     
      { Find a specific node }
      LNodeElement := LDocument.ChildNodes.FindNode('ThisIsTheDocumentElement');
     
      if (LNodeElement <> nil) then
      begin
        { Get a specific attribute }
        Writeln('Getting attribute...');
        if (LNodeElement.HasAttribute(CAttrName)) then
        begin
          LAttrValue := LNodeElement.Attributes[CAttrName];
          Writeln('Attribute value: ' + LAttrValue);
        end;
     
        { Traverse child nodes }
        Writeln(sLineBreak, 'Traversing child nodes...' + sLineBreak);
        for I := 0 to LNodeElement.ChildNodes.Count - 1 do
        begin
          LNode := LNodeElement.ChildNodes.Get(I);
          { Display node name }
          Writeln(sLineBreak + 'Node name: ' + LNode.NodeName);
          { Check if the node type is Text. }
          if LNode.NodeType = ntText then
          begin
            Writeln(HTAB + 'This is a node of type Text. The text is: ' + LNode.Text);
          end;
          { Check if the node is text element. }
          if LNode.IsTextElement then
          begin
            Writeln(HTAB + 'This is a text element. The text is: ' + LNode.Text);
          end;
        end;
      end;
    end;
    
  • 相关阅读:
    多目标演化算法
    socket编程与线程模型二
    把DataGrid控件定制成漂亮的课程表
    socket编程与线程模型五
    socket编程与线程模型一
    关于RSS的点滴
    对.net事件的看法
    IIs上的证书安装要点
    2d游戏斜视角地图的实现
    Invoke and BeginInvoke
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3179246.html
Copyright © 2011-2022 走看看