//create an instance of the XML parser
if (window.ActiveXObject)
{
//Checking if the browser is IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false"; //make sure doc is fully loaded
xmlDoc.load(strPath) //load the file in the parser
if (xmlDoc.parseError.errorCode != 0)
{
alert("Error #: " + xmlDoc.parseError.errorCode;
}
}
//for mozilla based browsers
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc= document.implementation.createDocument("","doc",null);
xmlDoc.async=false; //make sure doc is fully loaded
loaded = xmlDoc.load(strPath);
if(!loaded)
{
alert("Error in XML File");
}
}
//Parse the XML
var root = xmlDoc.documentElement;
level1Nodes = root.children;
for(var index1 = 0; index1 < level1Nodes.length; index1++)
{
//Extract the markup content from XML
var level1Node = level1Nodes[index1];
var strName = level1Node.children[0].textContent;
var strHeader1 = level1Node.children[1].tagName;
var strHeader1Content = level1Node.children[1].textContent;
}
Run Code Online (Sandbox Code Playgroud)
IE DOM Parser中是否提供"children"属性?
在IE中,XML文档不实现与HTML文档相同的文档对象模型; 特别是,XML Node对象没有children属性,这是非标准的.
您应该使用该childNodes集合.但请注意,在Firefox和其他浏览器中 - 以及IIRC,在IE中非常特殊的情况下 - 此集合还将包含仅包含空格的文本节点,例如原始XML文件中的换行符.因此,您需要检查nodeType属性:如果它的值为1,则它是一个元素,并且将具有诸如的属性tagName.
此外,由于MSXML实现DOM 1级,而火狐实现DOM Level 3的,你将无法使用该textContent财产,这是在3级.取而代之的介绍,你将不得不遍历childNodes的nodeType=== 3并连接他们的nodeValue属性,然后可能会想要修剪任何前导或尾随空格.或者,如果您知道其中只有textNodes,请normalize首先调用该元素的方法,以确保它只有一个文本节点子节点.
没有人说这东西应该很容易:-(
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |