zoukankan      html  css  js  c++  java
  • c++ builder 中的 XMLDocument 类详解(6) 访问节点属性

    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <msxmldom.hpp>
    #include <XMLDoc.hpp>
    #include <xmldom.hpp>
    #include <XMLIntf.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
        TButton *btn_1;
        TButton *btn_2;
        TButton *btn_3;
        TXMLDocument *XMLDocument1;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall btn_1Click(TObject *Sender);
        void __fastcall btn_2Click(TObject *Sender);
        void __fastcall btn_3Click(TObject *Sender);
    private:	// User declarations
    public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        XMLDocument1->LoadFromFile("D:\\code\\B_C_B\\XMLDocument\\test.xml");
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::btn_1Click(TObject *Sender)
    {
        //获取根元素属性
        _di_IXMLNodeList nodeList;
        _di_IXMLNode node;
    
        //根结点有几个属性
        ShowMessage(IntToStr(XMLDocument1->DocumentElement->AttributeNodes->Count));
    
        //通过属性名访问属性, 一般用 Attributes['属性名']}
        ShowMessage(XMLDocument1->DocumentElement->Attributes["备注"]);
    
        //通过属性位置访问属性, 必须用 AttributeNodes->noces[位置ID]
        ShowMessage(XMLDocument1->DocumentElement->AttributeNodes->Nodes[0]->Text);
    
        //但通过 AttributeNodes['属性名'] 也可以访问属性, 譬如
        ShowMessage(XMLDocument1->DocumentElement->AttributeNodes->FindNode("备注")->Text);
    
        //AttributeNodes 是某个节点的属性列表, 它也是一个节点列表对象, 譬如
        nodeList=XMLDocument1->DocumentElement->AttributeNodes;
        node=nodeList->Nodes[0];
        ShowMessage(node->Text);
        node=nodeList->FindNode("备注");
        ShowMessage(node->Text);
    }
    //---------------------------------------------------------------------------
    
    
    
    void __fastcall TForm1::btn_2Click(TObject *Sender)
    {
        //访问第二个人的属性信息
        _di_IXMLNodeList nodeList;
        _di_IXMLNode node;
    
        nodeList=XMLDocument1->DocumentElement->ChildNodes;
        node=nodeList->Nodes[1];
    
        ShowMessage(IntToStr(node->AttributeNodes->Count));
        ShowMessage(node->Attributes["职务"]);   //副科长
        ShowMessage(node->AttributeNodes->Nodes[0]->Text); //副科长
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::btn_3Click(TObject *Sender)
    {
        //访问某个结点的所有属性
        _di_IXMLNodeList nodeList;
        _di_IXMLNode node;
        int num;
    
        nodeList=XMLDocument1->DocumentElement->ChildNodes;
        node=nodeList->Nodes[0];
        num=node->AttributeNodes->Count;
    
        for(int i=0;i<num;i++)//这不是num-1
            ShowMessage(node->AttributeNodes->Nodes[i]->Text);//分别显示:科长 正局级
    }
    //---------------------------------------------------------------------------
    
    本人新博客网址为:http://www.hizds.com
    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
  • 相关阅读:
    Latex (1)
    linux/unix command
    函数类型和函数指针类型(摘自 linux c编程一站式学习)
    emacs 剪切板
    Centos 常见问题汇总
    makefile(摘自linux_c编程一站式学习)
    [转]DIV布局之三行三列之高度自适应
    ASP.Net新手项目经验谈
    获取中文首字母的方法
    还是不会伪装
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2075779.html
Copyright © 2011-2022 走看看