xml为字符串:
var xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?><root><files type=\"1\" name=\"Dbgview\" path=\"a\" size=\"2\"><file name=\"Dbgview\" path=\"a\" size=\"2\"/><file name=\"Dbgview\" path=\"a\" size=\"2\"/><file name=\"Dbgview\" path=\"a\" size=\"2\"/></files><files type=\"1\" name=\"Dbgview\" path=\"a\" size=\"2\"/><files type=\"2\" name=\"Dbgview\" path=\"a\" size=\"2\"/><files type=\"4\" name=\"Dbgview\" path=\"a\" size=\"2\"/><files type=\"8\" name=\"Dbgview\" path=\"a\" size=\"2\"/></root>"
拿到xmlDoc:
var xmlDoc = null;
//判断浏览器的类型
//支持IE浏览器
if(!window.DOMParser && window.ActiveXObject){ //window.DOMParser 判断是否是非ie浏览器
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
for(var i=0;i<xmlDomVersions.length;i++){
try{
xmlDoc = new ActiveXObject(xmlDomVersions[i]);
xmlDoc.async = false;
xmlDoc.loadXML(xmlStr); //loadXML方法载入xml字符串
break;
}catch(e){
}
}
}
//支持Mozilla浏览器
else if(window.DOMParser && document.implementation && document.implementation.createDocument){
try{
domParser = new DOMParser();
xmlDoc = domParser.parseFromString(xmlStr, 'text/xml');
}catch(e){
}
}
var fileElement = xmlDoc.getElementsByTagName('files');
var totalElementNum = fileElement.length;
遍历得到节点属性的值:
alert(n[i].attributes["type"].value);
alert(n[i].childNodes);
alert(n[i].getElementsByTagName("file")[0].attributes["name"].value);
获取几点的值:
n[i].getElementsByTagName("file")[0].firstChild.nodeValue;
copyJavascript操作xmlDoc的方法:
createAttribute() |
用指定的名字创建新的Attr节点。 |
createComment() |
用指定的字符串创建新的Comment节点。 |
createElement() |
用指定的标记名创建新的Element节点。 |
createTextNode() |
用指定的文本创建新的TextNode节点。 |
getElementById() |
返回文档中具有指定id属性的Element节点。 |
getElementsByTagName() |
返回文档中具有指定标记名的所有Element节点。 |
appendChild() |
通过把一个节点增加到当前节点的childNodes[]组,给文档树增加节点。 |
cloneNode() |
复制当前节点,或者复制当前节点以及它的所有子孙节点。 |
hasChildNodes() |
如果当前节点拥有子节点,则将返回true。 |
insertBefore() |
给文档树插入一个节点,位置在当前节点的指定子节点之前。如果该节点已经存在,则删除之再插入到它的位置。 |
removeChild() |
从文档树中删除并返回指定的子节点。 |
replaceChild() |
从文档树中删除并返回指定的子节点,用另一个节点替换它。 |
属性 |
描述 |
attributes |
如果该节点是一个Element,则以NamedNodeMap形式返回该元素的属性。 |
childNodes |
以Node[]的形式存放当前节点的子节点。如果没有子节点,则返回空数组。 |
firstChild |
以Node的形式返回当前节点的第一个子节点。如果没有子节点,则为null。 |
lastChild |
以Node的形式返回当前节点的最后一个子节点。如果没有子节点,则为null。 |
nextSibling |
以Node的形式返回当前节点的兄弟下一个节点。如果没有这样的节点,则返回null。下一个兄弟节点 |
nodeName |
节点的名字,Element节点则代表Element的标记名称。 |
nodeType |
代表节点的类型。 |
parentNode |
以Node的形式返回当前节点的父节点。如果没有父节点,则为null。 |
previousSibling |
以Node的形式返回紧挨当前节点、位于它之前的兄弟节点。如果没有这样的节点,则返回null。上一个兄弟节点 |