• delphi笔记之XML操作


    创建xml可用XMLDocument.xml.Add(‘xml内容’)

    newnode:=node.AddChlide(‘节点名’) //增加节点,返回新的节点

    Cnode,pnode:IXMLNode;

    pnode:=XMLDocument.addChilde(‘节点名’); //addChilde后返回生成的节点,第一次生成的pnode是根节点

    pnode.setAttribute(‘属性名’,’属性值’);  //增加节点的属性

    添加叶子子节点

    Cnode=pnode.addChilde(‘节点名’);

    Cnode.Text:=’叶子节点的文本值’;

    保存xml文档用XMLDocument.saveToFile(‘路径及文件名’);


    读取xml

    读取xml文件用xmlDocument.LoadFormFile(‘文件路径’);

    nodeList:IXMLNodeList

    Node:=xmlDocument.DocumentElement  //获得xml文件的根节点

    nodeList:=node.ChildeNodes;  //获得node节点的所有子节点列表

    count:=nodeList.Count;//获得列表中节点的总数

    node:=nodeList.first:  //获得列表中第一个子节点

    node:=nodeList.last:  //获得列表中最后一个子节点

    node:=node.ChildeNode[索引值]  //获得node索引值为’[]’中值的子节点

    node:=node.PreviousSibling;  //获得节点的上一个节点

    node:=node.NextSibling  //获得节点的下一个节点

    node:=node.ParentNode;  //获得节点的父节点

    node.Text //获得节点的文本值

    node.NodeName  //节点名

    node.NodeValue //节点值

     

    获得节点属性与获得子节点的方法类似

    Node.ArrtibuteNodes //获得node的属性列表

    Node.ArrtibuteNodes.Count; //获得属性总数

    Node.ArrtibuteNodes[索引值] //获得某个属性

    Node.ArrtibuteNodes[索引值].Text  //读取某个属性的文本

    node.AttributeNodes[索引值].NodeName   //属性名

    node.AttributeNodes[索引值].NodeValues //属性值

     

    其他操作:

    删除节点:

      nodeList := XMLDocument1.DocumentElement.ChildNodes;

      nodeList.Delete(nodeList.Count-1); //删除最后一条

     

    判断是否有子节点

    Node.HasChlideNodes  //返回值为Boolean

     

    判断是否具有 Text 属性

    Node.IsTextElement   //返回值为Boolean

     

    //通过hasChildeNodeIsTextElement可以判断node是支节点还是叶子节点,支节点的HasChlideNodestrue ,IsTextElementfalse;叶子节点的IsTextElementtrue;判断是否文本用node.NodeName='#text'(文本也可看做是一个节点);判断空节点用  (not node.HasChlideNodes) and (not node.IsTextElement

     

    格式化xml

    FormatXMLData(xmlDocument.XML.Text) 

     

    如果要想用浏览器读取xml时要用到ShellAPI:

    shellExecute(Handle,’open’,’Explorer.exe’,’xml文件路径’, nil, SW_SHOWNORMAL);

  • 相关阅读:
    服务器编程入门(12) 守护进程
    Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
    C++ Primer(6) 模板和泛型编程(上)
    Effective C++(9) 构造函数调用virtual函数会发生什么
    Android开发(7)数据库和Content Provider
    Effective C++(7) 为多态基类声明virtual析构函数 or Not
    Effective C++(6) 如何拒绝编译器的自动生成函数
    Effective C++(4) 确定对象被使用前已先被初始化
    Effective C++(5) 了解C++默默地编写并调用哪些函数
    Effective C++(1-2) 编译器替换预处理器
  • 原文地址:https://www.cnblogs.com/skybdemq/p/2196687.html
Copyright © 2020-2023  润新知