加载并解析xml文件:
<script type="text/javascript">
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e) {alert(e.message)}
}
try
{
xmlDoc.async=false;
xmlDoc.load("/example/xdom/books.xml");
document.write("xmlDoc is loaded, ready for use");
}
catch(e) {alert(e.message)}
</script>
加载并解析xml字符串
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(text,"text/xml");
}
catch(e) {alert(e.message)}
}
try
{
document.write("xmlDoc 已加载,可以使用。");
}
catch(e) {alert(e.message)}
</script>
微软的 XML 解析器内建于 Internet Explorer 5 及更高版本中。
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");
在 Firefox 及其他浏览器中的 XML 解析器xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml")
XML DOM 属性
典型的 DOM 属性:
x.nodeName - x 的名称
x.nodeValue - x 的值
x.parentNode - x 的父节点
x.childNodes - x 的子节点
x.attributes - x 的属性节点
firstChild
lastChild
nextSibling
previousSibling
注释:在上面的列表中,x 是一个节点对象。
XML DOM 方法
x.getElementsByTagName(name) - 获取带有指定标签名称的所有元素
x.appendChild(node) - 向 x 插入子节点
x.removeChild(node) - 从 x 删除子节点
注释:在上面的列表中,x 是一个节点对象。
节点集有length 属性。
nodeType 属性获取节点类型
nextSibling 属性节点的下一个兄弟节点
在 XML 文档对象模型 (DOM) 中,每个节点都是一个对象。
nodeName 属性
nodeName 属性规定节点的名称。
nodeName 是只读的
元素节点的 nodeName 与标签名相同
属性节点的 nodeName 是属性的名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document
nodeValue 属性
nodeValue 属性规定节点的值。
元素节点的 nodeValue 是 undefined
文本节点的 nodeValue 是文本自身
属性节点的 nodeValue 是属性的值
nodeType 属性
nodeType 属性规定节点的类型。
nodeType 是只读的。
最重要的节点类型是:
元素1 属性 2 文本3 注释8 文档9
所有现代浏览器都支持 W3C DOM 规范。不过,浏览器之间是有差异的。重要的区别有两点:
加载 XML 的方式
处理空白和换行的方式
Firefox,以及其他一些浏览器,会把空的空白或换行作为文本节点来处理,而 Internet Explorer 不会这样。
getAttribute() 方法返回属性的值。
获取属性值 - getAttributeNode()
nodeValue 属性用于改变节点值。
setAttribute(“old”,”new”) 方法用于改变属性的值。
removeChild(node) 方法删除指定节点。
removeAttribute() 方法删除指定属性。
removeAttributeNode(node) 方法通过使用 Node 对象作为参数,来删除属性节点。
replaceChild() 方法替换指定节点。
替换文本节点中的数据
replaceData() 方法用于替换文本节点中的数据。
replaceData() 方法有三个参数:
offset - 在何处开始替换字符。Offset 值以 0 开始。
length - 要替换多少字符
string - 要插入的字符串
创建新的元素节点
createElement() 方法创建新的元素节点:
创建新的属性节点
createAttribute() 用于创建新的属性节点:
通过使用 setAttribute() 来创建属性
由于 setAttribute() 可以在属性不存在的情况下创建新的属性,可以使用这个方法来创建新属性。
创建文本节点
createTextNode() 方法创建新的文本节点:
创建一个 CDATA Section 节点
createCDATASection() 方法创建一个新的 CDATA section 节点。
创建注释节点
createComment() 方法创建一个新的注释节点。
添加节点 - appendChild()
appendChild() 方法向已存在的节点添加子节点。
新节点会添加(追加)到任何已存在的子节点之后。
注释:如果节点的位置很重要,请使用 insertBefore() 方法。
插入节点 - insertBefore()
insertBefore() 方法用于在指定的子节点之前插入节点。
在被添加的节点的位置很重要时,此方法很有用。
insertBefore() 的第二个参数是 null,新节点将添加到最后一个已有的子节点之后。
添加新属性
addAtribute() 这个方法是不存在的。
如果属性不存在,则 setAttribute() 可创建一个新的属性:
向文本节点添加文本 - insertData()
insertData() 方法将数据插入已有的文本节点中。
insertData() 方法有两个参数:
offset - 在何处开始插入字符(以 0 开始)
string - 要插入的字符串
复制节点
cloneNode() 方法创建指定节点的副本。
cloneNode() 方法有一个参数(true 或 false)。该参数指示被复制的节点是否包括原节点的所有属性和子节点。
XMLHttpRequest 对象提供了在网页加载后与服务器进行通信的方法。
XMLHttpRequest 对象是开发者的梦想,因为您能够:
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据
创建 XMLHttpRequest 对象
通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象。
在所有现代浏览器中(包括 IE 7):
xmlhttp=new XMLHttpRequest()
在 Internet Explorer 5 和 6 中:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
该参数规定请求是否异步处理。
True 表示脚本会在 send() 方法之后继续执行,而不等待来自服务器的响应。