• VB下对HTML元素的操作


    <!DOCTYPE html>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
    <div>
    <ul class="lstbox"> 
        <li class="lst_head"><span class="col_1">姓名</span><span class="col_2">邮箱</span><span class="col_3">生日</span></li>
        <li class="lst_row"><span class="col_1">张三</span><span class="col_2"><a href="mailto:zhangsan@web.com" class="email">zhangsan</a></span><span class="col_3">80-5-1</span></li>
        <li class="lst_row"><span class="col_1">李四</span><span class="col_2"><a href="mailto:lisi@web.com" class="email">lisi</a></span><span class="col_3">85-5-1</span></li>
        <li class="lst_row"><span class="col_1">王五</span><span class="col_2"><a href="mailto:wangwu@web.com" class="email">wangwu</a></span><span class="col_3">90-5-1</span></li>
        <li class="lst_row"><span class="col_1">赵六</span><span class="col_2"><a href="mailto:zhaoliu@web.com" class="email">zhaoliu</a></span><span class="col_3">95-5-1</span></li>
    </ul>
    </div>
    </body>
    </html>

    如上面的页面源码,若要提取出姓名,邮箱和生日,可下面这样做

    Private Sub Command1_Click()
        Dim str As String
        Dim li, cd
        Dim c_name As String
        '遍历元素<li>
        For Each li In Dom.Document.getElementsByTagName("li")
            '用判断忽略掉列首名称的<li>行
            If li.classname = "lst_row" Then
                '遍历<li>下的节点
                For Each cd In li.childNodes
                    '判断是否为元素节点
                    If cd.nodeType <> 3 Then
                        If cd.classname = "col_2" Then
                            '如果是第2列的<span>,那么再用firstChild取出第一个元素节点<a>
                            str = str & cd.firstChild.href & " "
                        Else
                            '其他列直接输出文本
                            str = str & cd.innertext & " "
                        End If
                    End If
                Next
                str = str & vbCrLf
            End If
        Next
        Print str
    End Sub

    其实就很简单的东西,主要是对HTML不是很熟悉,对node和element有点晕,下面是nodeType值说明

    1 Element 代表元素 Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
    2 Attr 代表属性 Text, EntityReference
    3 Text 代表元素或属性中的文本内容。 None
    4 CDATASection 代表文档中的 CDATA 部分(不会由解析器解析的文本)。 None
    5 EntityReference 代表实体引用。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
    6 Entity 代表实体。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
    7 ProcessingInstruction 代表处理指令。 None
    8 Comment 代表注释。 None
    9 Document 代表整个文档(DOM 树的根节点)。 Element, ProcessingInstruction, Comment, DocumentType
    10 DocumentType 向为文档定义的实体提供接口 None
    11 DocumentFragment 代表轻量级的 Document 对象,能够容纳文档的某个部分 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
    12 Notation 代表 DTD 中声明的符号。 None
  • 相关阅读:
    你看懂了程序员的这些笑话吗?
    SharePoint 2013 Designer 自己定义操作菜单
    Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法
    【九】注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)
    LeetCode 122 Best Time to Buy and Sell Stock II
    Cocos2d-x 3.1.1 学习日志6--30分钟了解C++11新特性
    HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
    TS4
    angularjs1-过滤器
    angularjs1- ng-include
  • 原文地址:https://www.cnblogs.com/xiii/p/4967953.html
Copyright © 2020-2023  润新知