精华内容
下载资源
问答
  • 节点的层级关系操作
    2021-06-22 18:40:17

    利用节点层级关系获取元素

    利用父子兄节点关系获取元素 

    网页中所有内容都是节点(标签,属性,文本,注释)。

    DOM树中的所有节点都可以通过JavaScript来访问,元素皆可被访问并修改


    节点:一般地节点至少拥有nodeType(节点类型),nodename(节点名称)和nideValue(节点值)三个基本属性

    元素节点  nodeType为1;
    属性节点:nodeType为2
    文本节点:nodeType为3;(文本节点包含文字,空格,换行等)

    父节点:node.parentNode
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div class="box">
        <div class="cl"></div>
        <script>
            var cl=document.querySelector('.cl');
            //得到的是离元素最近的父节点,如何找不到则返回为null
            console.log(cl.parentNode);
        </script>
    </div>
    
    </body>
    </html>
    子节点:node.children     获取所有的子元素节点
    <ul class="ul">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <script>
        var ul=document.querySelector('.ul');
        //获取所有li地子节点
        console.log(ul.children);
    
    </script>

    获取ul下li地第一个子节点和最后一个子节点

    <body>
    <div class="box">
        <div class="cl"></div>
       
    </div>
    <ul class="ul">
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
    </ul>
    <script>
        var ul=document.querySelector('.ul');
        //实际:获取元素地第一个子节点和最后一个子节点地方法
        console.log(ul.children[0]);
        console.log(ul.children[ul.children.length-1])
    
    </script>
    
    </body>

    这个可以结合chlidren使用,chlidren返回的是一个数组,可通过元素下标地方式获取

    兄弟节点 

    元素.previousElementSibling //获取当前节点的前一个同级节点
    元素.nextElementSibling //获取当前节点的后一个同级节点

    有兼容性问题 IE9以上 

     

    感言:

               量的积累

                                                                                                

     

     

     

    更多相关内容
  • 目录节点概念节点的属性节点层级概念节点操作创建新节点增添和删除节点复制节点练习 节点 概念 一个页面就是一个节点树,页面中的内容就是节点。 例如:HTML文档可以看作是一个节点树,网页中的所有内容都是节点。 ...

    节点

    概念

    一个页面就是一个节点树,页面中的内容就是节点。

    例如:HTML文档可以看作是一个节点树,网页中的所有内容都是节点。

    节点的属性

    (1)节点类型(nodeType)

    A、1表示为元素节点(即标签)

    B、2表示为属性节点(标签的属性)

    C、3表示为文本节点(标签的内容),文本节点包括文字、空格、换行等

    (2)节点名称(nodeName)

    (3)节点值(nodeValue)

    节点层级

    概念

    一个HTML文件可以看作是所有元素组成的一个节点树,各元素节点之间有级别的划分。

    DOM根据HTML中各节点的不同作用,可将其分别划分为标签节点(元素节点)、文本节点和属性节点。

    (1)节点之间的层级关系:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>节点层级</title>
      </head>
      <body>
        <p>段落...</p>
        <a href="#"></a>
      </body>
    </html>
    

    根节点<html>标签是整个文档的根节点,有且仅有一个

    父节点:指的是某一个节点的上级节点

    子节点:指的是某一个节点的下级节点

    兄弟节点:两个节点同属于一个父节点(p标签和a标签就是兄弟节点)

    (2)获取父节点的方式:
    parentNode属性:来获得离当前元素的最近的一个父节点

    (3)获取子节点、子元素的方式:

    A、childNodes属性:返回当前节点的所有子节点的集合,返回的节点包括元素、文本和其他节点

    B、children属性:只返回子元素节点的集合(标签的集合)

    C、firstChild属性:返回第一个子节点(元素节点或文本节点)

    D、firstElementChild属性:返回第一个子元素(第一个子标签)

    E、lastChild属性:返回最后一个子节点(元素节点或文本节点)

    F、lastElementChild属性:返回最后一个子元素)(最后一个子标签)

    obj.children[0]			   // 获取第一个子元素节点
    obj.children[obj.children.length - 1]   // 获取最后一个子元素节点
    

    (4)获取兄弟节点、兄弟元素的方式

    A、nextSibling属性:返回后一个兄弟节点

    B、previousSibling属性:返回前一个兄弟节点

    C、nextElementSibling属性:返回下一个兄弟元素

    D、previousElementSibling属性:返回前一个兄弟元素

    节点操作

    创建新节点

    (1)通过createElement创建元素节点(创建标签);

    通过createTextNode创建文本节点

    (2)补充:

    动态创建元素节点的3种常见方式如下:

    document.write()创建元素,如果页面文档流加载完毕,再调用会导致页面重绘

    element.innerHTML将内容写入某个DOM节点,不会导致页面全部重绘

    document.createElement()创建多个元素效率稍微低一点,但是结构更加清晰


    增添和删除节点

    appendChild()方法,将一个节点添加到指定父节点的子节点列表末尾

    insertBefore(child, 指定元素)方法,将一个节点添加到父节点的指定子节点前面

    removeChild(child)用于删除节点,该方法从DOM中删除一个子节点,返回删除的节点


    复制节点

    cloneNode(deep)
    

    注意:
    deep是逻辑值,true表示深拷贝,即复制当前节点及其所有子节点(默认值)

    false表示浅拷贝,只复制当前节点不复制其子节点。

    练习

    <h3 id="h">插入节点</h3>
    <form name="frm">
    	输入文本:<input type="text" name="txt">
    	<input type="button" value="插入节点" onclick="insertNode('h',document.frm.txt.value)">
    </form>
    
    <script>
        function insertNode(nodeid,str){
            //创建一个p标签
            var newNode=document.createElement('p')
            //创建一个文本节点
            var newTxt=document.createTextNode(str)
            //将文本节点插入到p标签中
            newNode.appendChild(newTxt)
            var ref=document.querySelector('#'+nodeid)
            //判断ref是否有父节点,若节点没有父节点,则无法插入节点
            if(ref.parentNode){
                ref.parentNode.insertBefore(newNode,ref)
            }
        }
    </script>
    

    在这里插入图片描述

    展开全文
  • 管理节点层级和显示顺序

    千次阅读 2021-02-01 00:43:05
    管理节点层级和显示顺序通过前面的内容,我们了解了通过节点和组件的组合,能够在场景中创建...而节点之间的层级关系则需要使用 层级管理器 来检查和操作。请先阅读层级管理器面板介绍,来掌握 层级管理器 的使用...

    管理节点层级和显示顺序

    通过前面的内容,我们了解了通过节点和组件的组合,能够在场景中创建各种图像、文字和交互元素。当场景中的元素越来越多时,我们就需要通过节点层级来将节点按照逻辑功能归类,并按需要排列他们的显示顺序。

    了解层级管理器

    创建和编辑节点时,场景编辑器 可以展示直观的可视化场景元素。而节点之间的层级关系则需要使用 层级管理器 来检查和操作。请先阅读层级管理器面板介绍,来掌握 层级管理器 的使用方法。

    节点树

    通过层级管理器或运行时脚本的操作,建立的节点之间的完整逻辑关系,就叫做节点树。

    下面是一个简单的游戏场景,包括背景图像,三个角色,标题文字,分数文字和开始游戏的按钮:

    c26d5899a51dd87821797fdf2c628024.png

    每个视觉元素都是一个节点,通常我们不会把所有节点平铺在场景上,而是会按照一定的分类和次序组织成如下图所示的节点树:

    7668280761d9f199c60521b7142a8adc.png

    节点树中由箭头连接的两个节点之间就是父子关系,我们把显示在上面的叫做父节点,下面的叫子节点。在 层级管理器 中,上面的节点树就会是这个样子:

    6a8859663e869c12c400212f694d79e2.png

    这就是如果依照类别创建几个父节点,然后把同类节点放在一个父节点下构建出的节点树。在实际游戏项目中我们还可以根据需要用其他各种方式组织节点树,下面我们就来仔细看看节点树和节点父子关系的实际作用,以及我们如何组织节点树的策略。

    节点本地坐标系

    在前一节的本地坐标系相关介绍中,我们了解了节点父子关系的重要作用之一就是让我们能够在 本地坐标系 下使用子节点的变换属性。

    我们知道世界坐标系的原点是屏幕左下角,如果我们场景中所有节点都是平行排列,当我们需要将两个节点放在背景节点上面比较靠近中间的位置时,我们可以看到节点的 位置 属性如下图所示:

    cd609365d935e16d849ea5aebe3c8ca6.png

    由于两个主要节点和背景节点没有任何关系,因此他们的位置都是在世界坐标系下的数值,基本上没有规律,当我们需要让节点在背景范围内移动时,要计算出节点新的位置也需要动一番脑筋。

    下面我们再来看看借助节点父子关系和本地坐标系,我们把两个主要节点拖拽到 Parent 节点下面作为子节点,这时两个节点的 位置 属性会变成怎样:

    d32667d56705d1f870b83677bf6c1562.png

    由于 Parent 节点的锚点属性是 (0.5, 0.5),也就是以中心点作为本地坐标系原点,所以靠近父物体中心摆放的两个子节点的位置现在变成了 (-100, 0) 和 (100, 0),使用本地坐标系的位置信息能够直观的反应两个子节点的摆放逻辑,也就是「靠近背景中心左右对称摆放」。这样的工作方式能够更直接的体现设计师在搭建场景时的想法,在后续让节点在背景范围内运动的过程中,也更容易获得边界范围,比如父节点最右边的本地坐标,就是 (parentNode.width/2, 0)。

    另外当需要将一组节点作为一个整体进行移动、缩放、旋转时,节点的父子关系也可以让我们只关心父节点的变换操作,而不需要再去对子节点进行一一的遍历和计算。下图就是我们把上面例子里的父节点进行旋转和缩放的结果,可以看到子节点像印在父节点上一样,和父节点一起进行变换。

    de8c51dbbe6ad239e28de020fbd75e0a.png

    我们经常会遇到由很多节点组合成的复杂角色,游戏控制这些角色互动时,就需要这种基于父节点整体变换的功能。下面我们就来看看都有哪些基于逻辑关系的节点树管理方式。

    管理节点逻辑关系

    在游戏中经常需要控制复杂的玩家角色,这种角色通常不会只由单个节点组成,我们看看下面这张图里的英雄角色,就由三个不同的部分组成。

    d1be007b5fbc2277a69ee02ed4ce5987.png

    我们将英雄角色的 Sprite 图像显示和帧动画组件放在 body 节点上,然后需要跟随角色移动的阴影 Sprite 单独拿出来作为 shadow 节点。最后把负责生命值显示的进度条作为一组独立功能的节点,形成自己的迷你节点树 HPBar。

    上面的例子就是典型的根据逻辑需要来组织节点关系,我们可以根据游戏逻辑操作英雄角色节点的动画播放、左右翻转;根据角色当前血量访问 HPBar 节点来更新生命值显示;最后他们共同的父节点 player 用于控制角色的移动,并且可以作为一个整体被添加到其他场景节点中。

    管理节点渲染顺序

    在上面的例子中,我们可以注意一下 body 和 shadow 节点的排列顺序,在 层级管理器 中会按照节点排列顺序依次渲染,也就是显示在列表上面的节点会被下面的节点遮盖住。body 节点在列表里出现在下面,因此实际渲染时会挡住 shadow 节点。

    我们可以看到父节点永远是出现在子节点上面的,因此子节点永远都会遮盖住父节点,这点需要特别注意。这也是我们为什么必须把英雄角色 Sprite 单独分离出来作为 body 节点的原因,因为如果英雄的 Sprite 处在 player 节点上,我们就无法使英雄图像挡住他脚下的阴影了。

    性能考虑

    注意,虽然前面我们说父节点可以用来组织逻辑关系甚至是当做承载子节点的容器,但节点数量过多时,场景加载速度会受影响,因此在制作场景时应该避免出现大量无意义的节点,应该尽可能合并相同功能的节点。

    展开全文
  • 本文重点关注CWE之间的关系

    依据《CWE视图层级关系的解析 之 CWE节点的存储和定义》 中对CWE在xml文件中存储的结构和定义的描述。我们将CWE存储在xml文件中的信息转换到数据库中。数据库采用了轻量级的SQLite。

         1.1. 存储CWE信息的数据库表

    根据CWE的结构定义,提取了我们需要的主要信息,进行数据库表的设计。CWE数据库存储表的定义如下图:

    • CWE数据库表的含义:
      • cwe_node: CWE节点的主要信息;
      • cwe_relation: CWE关联关系;
      • cwe_applicable_platforms: CWE 适用的应用平台
      • cwe_detection_method: CWE的检测方式
      • cwe_taxonomy_mappings: CWE与业界规范的关系;
      • cwe_demostrative_example: CWE的样例代码;
      • cwe_observed_example: CWE观察到的示例;
      • cwe_potential_mitigation: CWE的消减措施;
      • cwe_attack_patterns: CWE的攻击模式;
      • cwe_common_consequence: CWE造成的危害。

    1.2. CWE节点和节点关系表的定义

    本文重点关注CWE之间的关系,所以在这里只对CWE节点的定义和节点之间的关系表做了描述。两个表的定义如下:

    -- CWE 节点的定义
    DROP INDEX IF EXISTS "cwe_node_ind";
    DROP TABLE IF EXISTS "cwe_node";
    CREATE TABLE "cwe_node" (
    	"cweId"	INTEGER NOT NULL UNIQUE,
    	"nodeType"	TEXT NOT NULL,
    	"nameEn"	TEXT NOT NULL,
    	"nameCn"	TEXT DEFAULT '',
    	"status"	TEXT DEFAULT '',
    	"filter"	TEXT DEFAULT '',
    	"structure"	TEXT DEFAULT '',
    	"description"	TEXT DEFAULT '',
    	"extendedDscription"	TEXT DEFAULT '',  
    	"likelihoodOfExp"	TEXT DEFAULT '',
    	"version"	TEXT NOT NULL,
    	PRIMARY KEY("cweId")
    );
    CREATE INDEX "cwe_node_ind" ON "cwe_node" (
    	"cweId",
    	"nodeType"
    );
    
    -- CWE节点关系
    DROP INDEX IF EXISTS "cwe_relation_ind";
    DROP TABLE IF EXISTS "cwe_relation";
    CREATE TABLE "cwe_relation" (
    	"cwe_relation_id"	INTEGER NOT NULL UNIQUE,
    	"cweId"	INTEGER NOT NULL,
        "nodeType"	TEXT NOT NULL,  
        "viewId"	INTEGER NOT NULL,
    	"relation"	TEXT NOT NULL,
    	"targetCweId"	INTEGER NOT NULL,
        "ordinal"	TEXT DEFAULT '',
    	"version"	TEXT NOT NULL,
    	PRIMARY KEY("cwe_relation_id" AUTOINCREMENT)
    );
    CREATE INDEX  `cwe_relation_ind` on `cwe_relation` (`viewid`,`cweId`,`targetCweId`,`relation`);
    

    1.3. 将xml的信息存储到数据库

    • 解析CWE xml文件将xml种的信息存入Sqlite数据库,具体步骤略过(这个会代码的不难实现);
    • 采用DB Browser for SQLite作为查询界面;
    • 为了便于查询,我们将节点关系为"ChildOf"的类型都换成"Has_Member"。

    1.4. 以CWE-1000 研究者视图为例

    我们仍以CWE-1000 研究者视图为例:

    select * from cwe_relation where viewId = 1000 and relation = 'Has_Member' order by cwe_relation_id

    查询结果如下:共得到1077条记录。

    2. CWE关系的查询

    CWE之间的关系是以父、子节点的方式存储在表cwe_relation中的。SQLite提供了递归的查询方式来遍历树形结构。我们可以利用SQLite的这个特性来完成CWE间关系的查询。

    我们先来介绍下这个特性的关键技术公用表表达式(Common Table Expression)。

    2.1. 公用表表达式(Common Table Expression)

    1999年,公用表表达式(Common Table Expression),简称CTE成为ANSI SQL 99标准的一部分。

    CTE可以看做是一个临时的结果集。使用公用表达式CTE可以让语句更加清晰简练。

    • CTE带来的好处:
      • 查询语句的可读性更好;
      • 在一个查询中,可以被引用多次;
      • 能够连接多个CTE;
      • 能够创建递归查询;
      • 能够提高SQL执行性能;
      • 能够有效地替代视图
    • CTE和临时表、表变量的比较。
      • 临时表:需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户推出环境则自动被删除;
      • 表变量:在内存中以表结构的形式存在,其定义与变量一致,其使用与表类似,不需要产生I/O;
      • 公用表表达式:定义在内存中保存的临时存储结果集对象,不产生I/O,不需要按照表变量这样定义,使用方法和表类似。可以自己引用,也可以再查询中被多次引用。
    • 公用表表达式的作用类似于仅在单个SQL语句期间存在的临时视图。按照是否递归,可以将公用表表达式分为递归公用表表达式和非递归公用表表达式:
      • 普通: 普通的公共表表达式通过将主查询中的子查询分解出来,有助于使查询更易于理解;
      • 递归公用表表达式: 提供了对树和图进行分层或递归查询的功能。

    由于CTE的众多好处,特别是对树和图的处理能力的增强。各种数据库纷纷实现CTE功能:

    • 2005年SQL Server2005版本的引入CTE;
    • 2009年PostgreSQL 8.4版本的引入CTE;
    • 2013年Oracle 12.1 版本的引入CTE;
    • 2014年SQLite 3.8.3 版本的引入CTE;
    • 2017年MySQL在8.0.1版本被引入CTE;

    2.2. SQLite中的递归查询

    • SQLite With的语法

    递归公用表表达式可用于编写遍历树或图的查询。递归公用表表达式具有与普通公用表表达式相同的基本语法,但具有以下附加属性:

    • "select-stmt"必须是复合select。也就是说,CTE主体必须是两个或多个单独的SELECT语句,这些语句由复合运算符(如UNION,UNION ALL,INTERSECT或EXCEPT)分隔。
    • 组成该复合的单个SELECT语句中的一个或多个必须是“递归的”。如果SELECT语句的FROM子句恰好包含对CTE表(在AS子句的左侧命名的表)的一个引用,则该SELECT语句是递归的。
    • 复合中的一个或多个SELECT语句必须是非递归的。
    • 所有非递归SELECT语句必须出现在任何递归SELECT语句之前。
    • 递归SELECT语句必须与非递归SELECT语句分开,并且必须由UNION或UNION ALL运算符彼此分开。如果有两个或多个递归SELECT语句,则必须使用相同的运算符将它们彼此分开,该运算符将第一个递归 * SELECT与最后一个非递归SELECT语句分开。
    • 递归SELECT语句可能不使用 聚合函数或窗口函数。
    • 递归公用表表达式必须类似于以下内容:

    • 计算递归表内容的基本算法如下:
      • 运行初始选择并将结果添加到队列中。
      • 当队列不为空时:
        • 从队列中提取一行。
        • 将那一行插入递归表
        • 假设刚提取的单行是递归表中的唯一行,然后运行递归选择,将所有结果添加到队列中。

    2.3. CWE在视图中的位置

    查找一个CWE在试图中的位置。可以转化成查找一个节点的父节点。

    • 这里通过level字段来反映出所在节点的从最高层到当前节点的层级;
    • 通过符号"->"来反映节点的链路关系。

    例如:需要查找CWE-120在研究者视图CWE-1000中的位置。

    • CWE-120实际的位置

    • 参考SQL
    WITH RECURSIVE tc(level, targetCweId,target) 
    as (select 0 level,targetCweId, targetCweId target from cwe_relation where viewid=1000 and cweid = 1000 and relation='Has_Member' 
    	UNION
    	select tc.level+1 level,r.targetCweId, tc.target||"->"||r.targetCweId target from cwe_relation r,tc where r.viewid=1000 and r.relation='Has_Member' and r.cweid = tc.targetCweId
    )
    SELECT * FROM tc where tc.targetCweId = 120
    
    • 查询结果

    level

    targetCweId

    target

    3

    120

    664->118->119->120

    从查询结果可以看到CWE-120的父节点依次为:CWE-119,CWE-118, CWE-664。这个结果与实际的页面展示相同。

    • 注意:由于CWE在定义时,CWE之间不完全是正交关系,所以存在一个CWE 在不同分支的场景。在具体使用时需要用户对实际缺陷的上下文场景做分析后确认。例如:
      CWE-425 直接请求(强制性浏览)就存在这种场景,如下面的查询结果。

    level

    targetCweId

    target

    2

    425

    693->424->425

    3

    425

    284->285->862->425

    3

    425

    284->287->288->425

    4

    425

    710->657->638->424->425

    5

    425

    284->285->862->638->424->425

    2.4. CWE的子节点

    查找某个CWE下包含的CWE。这个场景可以转化成查找某个节点的子节点来实现。

    例如查找CWE-119的下所有的节点

    • 参考SQL
    WITH RECURSIVE tc(level, targetCweId,target) 
    as (select 0 level,targetCweId, targetCweId target from cwe_relation where viewid=1000 and cweid = 119 and relation='Has_Member' 
    	UNION
    	select tc.level+1 level,r.targetCweId, tc.target||"->"||r.targetCweId target from cwe_relation r,tc where r.viewid=1000 and r.relation='Has_Member' and r.cweid = tc.targetCweId
    )
    SELECT * FROM tc
    
    • 查询结果

    level

    targetCweId

    target

    0

    120

    120

    0

    125

    125

    0

    466

    466

    0

    680

    680

    0

    786

    786

    0

    787

    787

    0

    788

    788

    0

    805

    805

    0

    822

    822

    0

    823

    823

    0

    824

    824

    0

    825

    825

    1

    785

    120->785

    1

    126

    125->126

    1

    127

    125->127

    1

    124

    786->124

    1

    127

    786->127

    1

    121

    787->121

    1

    122

    787->122

    1

    123

    787->123

    1

    124

    787->124

    1

    121

    788->121

    1

    122

    788->122

    1

    126

    788->126

    1

    806

    805->806

    1

    415

    825->415

    1

    416

    825->416

    3. CWE数据库中得到的其他信息

    我们将CWE的信息转换到数据库后,还可以快速得到很多有用的统计信息。

    3.1. CWE 关联的业界规范

    CWE的外部视图中,很多是业界规范对CWE的映射关系。我们可以通过这些规范对CWE的覆盖情况来分析这些规范的侧重点和重合情况,从而在安全防御的措施制定时,根据自己的实际情况,进行全面的防御。

    例如:查看CWE视图中关联的业界规范对CWE的引用情况。

    • 参考SQL
    select taxonomyName,count(*) from cwe_taxonomy_mappings m group by taxonomyName
    • 查询结果

    taxonomyName

    count(*)

    7 Pernicious Kingdoms

    89

    CERT C Secure Coding

    228

    CLASP

    105

    Landwehr

    9

    OMG ASCMM

    20

    OMG ASCPEM

    15

    OMG ASCRM

    29

    OMG ASCSM

    22

    OWASP Top Ten 2004

    71

    OWASP Top Ten 2007

    31

    PLOVER

    304

    SEI CERT Oracle Coding Standard for Java

    8

    SEI CERT Perl Coding Standard

    30

    Software Fault Patterns

    296

    The CERT Oracle Secure Coding Standard for Java (2011)

    139

    WASC

    55

    3.2. CWE的消减措施

    查看CWE 所标识的安全消减措施,用于某些安全问题的安全防御。

    例如查看CISQ规范关联CWE的风险消减措施。

    • 参考SQL
    select cweId,nodetype, 
    sum(case when phase='Requirements' then 1 else 0 end) as 'Requirements',
    sum(case when phase='Architecture and Design' then 1 else 0 end) as 'Architecture and Design',
    sum(case when phase='Documentation' then 1 else 0 end) as 'Documentation',
    sum(case when phase='Build and Compilation' then 1 else 0 end) as 'Build and Compilation', 
    sum(case when phase='Implementation' then 1 else 0 end) as 'Implementation',
    sum(case when phase='Testing' then 1 else 0 end) as 'Testing',
    sum(case when phase='System Configuration' then 1 else 0 end) as 'System Configuration',
    sum(case when phase='Operation' then 1 else 0 end) as 'Operation'
    from (
    	select distinct a.cweid, a.nodeType,b.phase from (
    	select c.cweid, c.nodeType from cwe_relation r, cwe_node c where r.viewid=1340 and r.relation = 'Has_Member' and c.cweId= r.targetCweId ) a left join 
    	(select * from cwe_potential_mitigation m) b on a.cweid=b.cweId
    
    • 查询结果(部分):

    4. 参考:

    5. 小结

    • 设计了CWE Xml文件中存储的主要信息对应SQLite的数据库表;
    • 简单介绍了数据库中公用表表达式(CTE)用于树或图的递归查询使用方法;
    • 借助公用表表达式实现CWE在视图中所归属的分析信息(父节点)和所包含的CWE(子节点)的信息;
    • 依据CWE数据库实现CWE收录的业界规范的关联关系的分析;
    • 依据CWE数据库实现CISQ关联的CWE的弱点消减措施;
    • 依据以上的分析,可以更好的帮助我们完成软件安全的全面防御。
    展开全文
  • 所以可以利用节点层级关系来获取元素,node节点操作主要是利用父子兄节点关系获取元素,逻辑性较强,但加兼容性较差。 在HTML中的所有内容都是节点(标签、属性、文本、注释等),这些节点都可以被修改,也可以创建或...
  • 基于层级关系获取节点(父子关系,兄弟关系) perentNode 获取父节点(只有一个) childNode 获取所有子节点(包含文本节点:文本内容 ,换行) children 获取所有直接子节点(只包含元素节点,不含文本节点)...
  • 1.为什么要用节点操作 在之前的博客中 我们有说过其他的获取元素的方法 但是很麻烦只能一个一个的取 而且逻辑性不强
  • JS节点操作(1) - 父节点,子节点,兄弟节点 节点操作的作用 ...2. 利用节点层级关系获取元素 利用父子兄弟节点关系获取元素 逻辑性墙,但是兼容性稍差 这两种方法都可以获取元素,但是节点操作更简单。
  • 了解js的节点操作,父级节点node.parentNode和子级节点parentNode.children,兄弟节点nextElementSibling
  • JS DOM节点操作详解

    千次阅读 2022-04-16 08:27:22
    利用层级关系获取元素二、节点概述三、节点层级1.父级节点2.子节点3.第一个子元素和最后一个子元素4.小案例(新浪下拉菜单)5.兄弟节点6.创建添加节点7.删除节点8.复制节点 一、获取元素的两种方式 我们获取元素通常...
  • 节点操作介绍

    2021-05-27 18:57:28
    1-1 节点概述 网页中所有的内容都叫做节点(标签,属性,文本,注释等),在DOM中,节点使用的是 node 表示。 HTML DOM 树中的所有节点都可以通过JavaScript进行访问,所有HTML元素(节点)都可以被修改,也可以...
  • DOM-节点操作

    2021-07-21 16:23:47
    利用节点层级关系获取元素 利用父子兄节点关系获取元素 逻辑性强,但兼容性较差 以上两种方式都可以获取元素节点,后面都会使用,但是节点操作更简单 节点概述 网页中的所有内容都是节点(标签、属性、文本、注释等...
  • (2)目录项:包含“文件名,索引节点指针,与其他目录项的层级关系”的数据结构,类似: struct entry { char filename[];//文件名 indextype *indexpoint;//索引节点指针 entry *parententrypoint;//父目录项...
  • 无论你想建立自己的论坛,在你的网站上从一个邮件列表发布消息,或编写自己的cms:你将会遇到一种情况:将分层数据(层级结构)存储在数据库中。除非你使用一个类似xml的数据库,通用的关系型数据库是很难做到这一点。关系...
  • JavaScript-节点操作

    千次阅读 2022-03-22 11:04:45
    网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM中,节点用node来表示。 HTML DOM树中的所有节点均可通过JavaScript进行访问,所有HTML元素(节点)均可被修改,也可以创建或删除。 一般的,节点...
  • DOM节点操作

    2022-01-21 16:46:06
    节点之间有层级关系,父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点,同级的子节点被称为同胞(兄弟或姐妹) 2、常用节点获取方法和属性 要进行DOM操作,首先要获取...
  • 不过,除非使用类XML的数据库,通用的关系数据库很难做到这点。对于树形数据的存储有很多种方案。主要的方法有两种:邻接表模型,以及修改过的前序遍历算法。本文将会讨论这两种方法的实现。这里的例子沿用参考文章...
  • javascript二——节点操作

    千次阅读 2022-03-24 11:35:17
    文章目录节点操作节点操作节点操作兄弟节点创建节点添加节点留言板案例删除节点删除留言复制节点动态生成表格案例三种动态创建...利用节点层级关系获取元素 利用父子兄弟节点关系获取元素 逻辑性强,但是兼容性
  • 2.1 为什么学习节点操作 获取元素通常使用两种方式: 利用DOM提供的方法获取元素,缺点:逻辑性不强、繁琐 document.getElementByld() document.getElementsByTagName() document.querySelector() 利用 节点层级关系 ...
  • 树型结构层级关系

    2018-09-27 13:54:00
    转自:... 1、基本语法 ...select * from table [start with condition1] ... connect by [prior] id=parentid12 ...一般用来查找存在父子关系的数据,也就是树形结构的数据;其返还的数据也能够明...
  • 目录 获取元素的两种方式 节点的概述 节点层级 3.1 父级节点 3.2 父子节点 3.3 兄弟节点 创建节点 删除节点 ...(2)利用节点层级关系获取元素 利用父子兄弟节点关系获取元素 逻辑性强,但兼容性差 2.
  • JS最实用的dom节点操作大全

    多人点赞 热门讨论 2021-11-08 14:37:19
    文章目录学习目标一、排他操作二、节点操作2.1 节点概述2.2 节点层级2.3 父级节点2.4 子节点2.5 兄弟节点2.6 创建节点2.7 添加节点2.8 删除节点2.9 复制(克隆)节点三、创建元素的三种方式总结 学习目标 能够区分...
  • 节点操作

    2020-05-25 00:10:43
    1.1 节点概述 网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM 中,节点使用 node ...利用 DOM 树可以把节点划分为不同的层级关系,常见的是父子兄层级关系。 1.3. 父级节点 node.parentNode parentNode
  • 任何 HTML 或 XML 文档都可以用 DOM 表示为一个由节点构成的层级结构。 一般来说在HTML中文档的节点分为三种: 1、元素节点 通过querySelector获取的节点就是元素节点 2、属性节点 通过getAttribute获取到的...
  • js节点操作

    2019-09-08 23:42:09
    js节点操作 1.节点 **节点:**网页中所有内容都是节点(标签, 属性, 文本, 注释等),在DOM中,节点使用node来表示; HTML DOM 树中的所有节点均可通过JavaScript进行访问,所有HTML元素(节点) 均可被修改,也可以删除或创建...
  • Houdini3:节点操作

    千次阅读 2021-10-04 17:16:28
    一、节点层级 节点控制面板和节点的创建方式在Houdini1里面就有说过,这里不做赘述 可以将一个节点理解为一个文件夹,其实和unity什么的差不多,节点可以有子节点,可以有父节点,比如建立一个geometry节点 ...
  • 根据层级关系,构建树形结构数据

    千次阅读 2019-12-24 21:34:40
    根据层级关系,构建树形结构数据一、基本模型二、递归工具类三、基于Model数据,构建资源树 一、基本模型 @Data public class ResourceTreeVO { private Long resourceId; /** * 资源级别 * 1:一级,2:二级,3...
  • 这篇文章是一篇自己学习DOM相关内容之后的总结,也是方便对DOM属性和HTML属性的理解,以及使用JavaScript更好的对HTML和DOM进行操作,自我感觉官方的话特别的繁琐,不是特别好理解,都是一些书面语看起来特别的别扭...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,104
精华内容 15,641
关键字:

节点的层级关系操作