首页 > 其他 > 详细

文档对象模型

时间:2021-03-09 09:18:04      阅读:23      评论:0      收藏:0      [点我收藏+]

文档类型模型

DOM概述

Xml DOM 文档对象模型(Document Object Model

操作XML DOM的一个API(Application Programming Interface,应用程序接口) w3c标准

封装了一些与DOM相关的类,使用这些类单方法和属性,操作DOM:获取对象,修改,添加,删除XML元素

1.节点(node):

  • 整个文档

  • 一个元素

  • 文本

  • 属性

  • 注释

2.节点树(node tree)

整个XML文档都可以映射为一棵节点树

<person pid="1001">
    姓名
	<name>zhangsan</name>
    年龄
    <age>20</age>
    <!--注释 -->
</person>

技术分享图片

节点之间的关系:

父(parent)子(child):(上下级)

兄弟(sibling):同级(同一个父节点)

叶子:末端的节点 没有子节点的节点

DOM API

API: IE

获得DOM对象

Xmldoc = new ActiveObject ("Microsoft.XMLDOM");

//关闭

Xmldoc.asyn="false";

//加载xml文档

//Xmldoc.load("文件名");

Xmldoc.load("example.xml")

DOM对象的属性和方法

X.nodeName:节点名称

x.nodeValue:节点值 无值 null

x.parentNode:父节点

x.childNodes:子节点数组

x.attributes:节点的属性数组

DOM的方法

x.getElementsByTagName("tagName"):返回指定标签节点对象数组

<!DOCTYPE html>
<html>
    <head>
        <script>
        //获得DOM对象
            var xmldoc= new ActiveXObject("Microsoft.XMLDOM");
            //X是xml
            xmldoc.asyn="false";
            xmldoc.load("");//xxx.xml
            //获得note节点对象
            var myElements=xmldoc.getElementsByTagName("");//("xxx")[0]
            //访问其属性
            document.write("子节点名称"+myElements.nodeName +"<br/>");
            //document.write(myElements[0].childNodes[0].nodeValue +"<br/>");
       		for(i=0;i<myElement.childNodes.length;i++){
                document.write("子节点名称"+myElement.childNodes(i).nodeName+":"+myElement.childNodes(i).nodeValue+":"+"<br/>");
            }
            
            document.write("子节点名称"+myElement.childNodes(0).nodeName+":"+myElement.childNodes(0).childNodes(0).nodeValue+":"+"<br/>");
            var e =myElement.childNodes(0);
            var e2 = childNodes[0].childNodes[0].nodeValue
        </script>
    </head>
        <body>
            
        </body>
</html>
<?xml version="1.0"?>
<note>
<to>zhangdan</to>
    <from id="03" aff="fad">af</from>
    <heading>fadf</heading>
    <!--hi-->
    <body></body>
</note>
//子节点之间导航
//firstChild :第一个子节点
//lastChild :最后一个
//nextSibling :下一个兄弟节点
//prevSibling : 上一个兄弟节点
//parentNode :父节点


访问下一个节点,有文本
document.write(myElement.nextSibling.childNodes[0].nodeValue);

属性

//访问属性
//找到节点
var myElemen2=xmldoc.getElementsByTagName("from")[0];
//你其实不知道from有几个属性,毕竟你是访问
//访问元素节点:getAttributeNode();方法
var idtxt = myElemen2.getAttributeNode("id").nodeValue;
//输出
document.write(idtxt + "<br/>");
//访问属性值:getAttribute()
var myelement2_from=xmldoc.getElementsByTagName="from"[0];
document.write(myElemen2.getAttribute("id","4") + "<br/>");//将id改为4


//节点属性 nodeType
//1:元素节点
//2:属性节点
//3:文本节点
//8:注释换行
//9:XMLDOM文档节点


Dom树的遍历

改变节点的值:找到这个值,再改变这个值

<script type="text/javascript" src="ss.js"></script>
<script>
1.获得node对象
var myelement_to = xmldoc.getElementsByTagName("to")[0];
2.赋值
myelement.childNodes.nodeValue="power";
   //改变属性值setAttribute()
    myelement2.setAttribute("");
    
    删除节点:
    removeNode();
    removeChild();
    var element_to=xmldoc.getElementsByTagName("to")[0];
    //element_note.removeChild(element_to);
    element_to.parentNode.removeChild(element_to)
    
    删除属性
    
    removeAttribute();
    //删除第二个属性名
    myelement_from.removeAttributeNode(myelement_from.getAttributeNode("第二个属性名")); //参数 属性对象
    myelement_from.removeAttribute("ming");//参数:属性名称
    
    添加节点
    1.创建节点  createElement()
    var myNewElement = xmldoc.createElement("myElement");//参数:节点名称
    //添加节点到XMLDOM:appendChild();
    var myelement = xmldoc.getElementsByTagName("to")[0];
    element_to.appendChild(myNewElement);
    
    //创建属性节点 createAttribute();
    var myNewattr=myNewElement.createAttribute("myattr");
    //设置值
    //方法一        myNewElement.setAttributeNode(myNewattr);
    //方法二        myNewElement.setAttribute("myattr","hello");
    
    var myNewAttr = xmldoc.createAttribute("myattr");//创建属性节点对象
    myNewAttr.nodeValue="hello";//设置属性的值
    element_to.setAttributeNode(myNewAttr);//参数是属性节点对象
    console.log(xmldoc.xml);
    
    
    //创建文本节点
    var myNewText=xmldoc.createTextNode("mytext");参数:节点名称
    element_to.appendChild(myNewText);//添加到DOM树
    
    //创建注释节点
    var myNewcomm=xmldoc.createcomment("mycomment");参数:节点名称
    element_to.appendChild(myNewcomm);//添加到DOM树
    
    
    listNode(myelement,0);
    
    
    
    
    </script>

文档对象模型

原文:https://www.cnblogs.com/tqdm/p/14503527.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!