很久没有真正的写东西了..忙着找工作..现在工作有个着落了..又有心思研究.学习新的东西了
这篇为以后学ajax打基础的
生成DOM文档对象的方法
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
生成XML文档对象xmlDoc,xmlDoc中包含XML文档中所有元素和节点
xmlDoc.async=false;
装载XML文档完毕后才开始处理下一步骤
xmlDoc.load("1.xml");
将XML文档装载到文档对象中,在内存中形成文档对象树
DOM对象
1.IXMLDOMDocument/DOMDocument
2.IXMLDOMNode
3.IXMLDOMNodeList
4.IXMLDOMParseError
5.IXMLDOMAttribute
6.IXMLDOMDocumentType
1.IXMLDOMDocument/DOMDocument
表示DOM树的最顶层节点
属性
async--是否可以异步下载(可读写属性)
attributes--返回节点的属性列表
baseName--返回节点的标记名称
childNodes--子节点列表
documentElement--返回文档的根元素(可读写属性)
方法
appendChild(在当前节点的最后增加一个新的子节点)
createNode(根据条件生成一个新节点)
createnode(type,name,namespaceURL)
IXMLDOMDocument/DOMDocument示例
var
oNodeMap,str,oList,item;
var
xmlDoc
=
new
ActiveXObject(
"
Msxml2.DOMDocument.4.0
"
);
xmlDoc.async
=
false
;
xmlDoc.load(
"
candidate.xml
"
);
if
(xmlDoc.parseError
!=
0
)
document.writeln(xmlDoc.parseError.reason
+
"
<br>
"
);
else
{
oNodeMap
=
xmlDoc.documentElement.attributes;
document.write(oNodeMap.length
+
"
<br>
"
);
str
=
xmlDoc.documentElement.childNodes[
1
].baseName;
document.write(str
+
"
<br>
"
);
oList
=
xmlDoc.documentElement.childNodes;
for
(
var
i
=
0
;i
<
oList.length;i
++
)
document.write(oList[i].xml
+
"
<br>
"
);
}
<
script language
=
"
javascript
"
>
var
xmlDoc
=
new
ActiveXObject(
"
Msxml2.DOMDocument.4.0
"
);
xmlDoc.async
=
false
;
xmlDoc.load(
"
candidate.xml
"
);
var
root
=
xmlDoc.documentElement;
document.write(root.xml);
document.write(
"
<br>--------------------------<br>
"
);
var
node
=
xmlDoc.createNode(
1
,
"
创建节点
"
,
""
);
node.text
=
"
这是新创建得节点
"
;
root.appendChild(node);
window.alert(root.xml);
document.write(root.xml);
</
script
>
IXMLDOMNode
属性
lastChild--返回最后一个子节点
nextSibling--指向同一层的下一个兄弟节点
xml--用XML格式表现该节点和所有子节点的内容
方法
selectNodes--根据匹配模式操作来返回符合要求的节点集合
selectSingleNode--根据匹配模式操作来返回符合要求的第一个节点
IXMLDOMNode是DOM的基本对象,所有节点都可以看作是一个IXMLDOMNode对象,所有其它DOM对象接口都是继承它的属性和方法。
<
html
>
<
body
>
<
script
language
="javascript"
>
var
xmlDoc
=
new
ActiveXObject(
"
Msxml2.DOMDocument.4.0
"
);
xmlDoc.async
=
false
;
xmlDoc.load(
"
candidate.xml
"
);
var
root
=
xmlDoc.documentElement;
var
node
=
root.lastChild;
window.alert(node.xml);
var
firstNode
=
root.childNodes[
0
];
var
nextNode
=
firstNode.nextSibling;
window.alert(nextNode.xml);
</
script
>
</
body
>
</
html
>
<
html
>
<
body
>
<
script
language
="javascript"
>
var
xmlDoc
=
new
ActiveXObject(
"
Msxml2.DOMDocument.4.0
"
);
xmlDoc.async
=
false
;
xmlDoc.load(
"
candidate.xml
"
);
var
root
=
xmlDoc.documentElement;
var
node
=
root.selectNodes(
"
PERSON/NAME
"
);
window.alert(node.length);
</
script
>
</
body
>
</
html
>
IXMLDOMNodeList
属性
length--接口对象中包含的节点数量。
方法
nextNode--返回节点集合中下一个节点。
节点的集合
IXMLDOMParseError
属性
line--错误所在行号
linepos--错误在行中的位置
reason--发生错误的原因
srcText--错误行文本
用此接口捕获XML文档中存在的错误(包括XML结构完整错误及有效性错误)
IXMLDOMParseError示例
<
html
>
<
body
>
<
script
language
="javascript"
>
var
xmlDoc
=
new
ActiveXObject(
"
Msxml2.DOMDocument.4.0
"
);
xmlDoc.async
=
false
;
xmlDoc.load(
"
errorxml.xml
"
);
if
(xmlDoc.parseError.errorCode
!=
0
)
{
document.writeln(
"
错误所在的行号:
"
+
xmlDoc.parseError.line
+
"
<br>
"
);
document.writeln(
"
错误所在的列号:
"
+
xmlDoc.parseError.linepos
+
"
<br>
"
);
document.writeln(
"
错误原因:
"
+
xmlDoc.parseError.reason
+
"
<br>
"
);
document.writeln(
"
错误行文本:
"
+
xmlDoc.parseError.srcText
+
"
<br>
"
);
}
</
script
>
</
body
>
</
html
>
IXMLDOMAttribute
表示元素的相关属性
属性nodeType--返回节点类型
ownerDocument--返回该节点的根节点
text--返回节点的文本和子节点树
value--返回属性的值
xml--返回当前节点及其所有子节点的内容
方法appendChild
selectSingleNode
IDOMAttribute示例
<html>
<body>
<script language="javascript">
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
xmlDoc.async=false;
xmlDoc.load("candidate.xml");
var node=xmlDoc.documentElement.childNodes[0];
document.write("节点类型:"+node.nodeType+"<br>");
document.write("根元素节点名称:" +node.ownerDocument.documentElement.tagName + "<br>");
document.write ("当前节点的属性值:" + node.attributes[0].value + "<br>");
document.write("当前节点及其子节点所包含的文本:" + node.text + "<br>");
</script>
</body>
</html> IXMLDOMDocumentType
属性
entities--返回实体集,包括内部和外部DTD定义的
name--返回文档类型的名字
nodeTypeString--返回节点类型的字符串表示
方法
removeChild--从返回的子节点集中删除特定子节点,并返回它
replaceChild--从返回的子节点集中用新节点替换特定老节点
IXMLDOMDocumentType示例
<html>
<body>
<script language="javascript">
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
xmlDoc.async=false;
xmlDoc.load("candidate.xml");
var root=xmlDoc.documentElement;
var node=root.childNodes[1];
window.alert("当前节点的类型为:" + node.childNodes[0].nodeTypeString);
var element=xmlDoc.createElement("Resume");
element.text="添加的新元素";
root.childNodes[1].replaceChild(element,node.childNodes[0]);
window.alert(node.xml);
</script>
</body>
</html>
上示例用到的XML文件
<?xml version="1.0"?>
<PEOPLE id="fdsfsd" ds="sdfsd">
<PERSON PERSONID="E01">
<NAME>Tony Blair</NAME>
<ADDRESS>10 Downing Street, London, UK</ADDRESS>
<TEL>(061) 98765</TEL><FAX>(061) 98765</FAX>
<EMAIL>blair@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E02">
<NAME>Bill Clinton</NAME>
<ADDRESS>White House, USA</ADDRESS>
<TEL>(001) 6400 98765</TEL><FAX>(001) 6400 98765</FAX>
<EMAIL>bill@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E03">
<NAME>Tom Cruise</NAME>
<ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
<TEL>(001) 4500 67859</TEL><FAX>(001) 4500 67859</FAX>
<EMAIL>cruise@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E04">
<NAME>Linda Goodman</NAME>
<ADDRESS>78 Crax Lane, London, UK</ADDRESS>
<TEL>(061) 54 56789</TEL><FAX>(061) 54 56789</FAX>
<EMAIL>linda@everywhere.com</EMAIL>
</PERSON>
</PEOPLE>