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
  • 相关阅读:
    jQuery EasyUI dialog 居中最简单的办法
    Sql Server 查看存储过程最后修改时间
    MyEclipse格式化JSP代码,其中Javascript无法格式化的原因
    MyEclipse格式化JSP代码导致Java表达式<%= %>自动换行的解决办法
    重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法
    端口映射
    你以为的Jquery选择器是什么样子的?
    JS&Jquery基础之窗口对象的关系总结
    JS&Jquery基础之对象和数组以及类型转换
    SQL Server关于AlwaysOn的理解
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2075779.html
Copyright © 2011-2022 走看看