很久沒有真正的寫東西了..忙著找工作..現在工作有個著落了..又有心思研究.學習新的東西了
這篇為以后學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>?????
