xmlDoc = new ActiveXObject('Microsoft.XMLDOM');问题

xunis 2014-07-08 05:32:46
现在用
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.loadXML(xmlContent);
去解析xml文件,需要IE8,IE9,IE10,IE11兼容,目前用这个只支持IE8,请问我要怎么做,用什么方式处理可以解决呢?web端的东西做得少没经验,谢谢帮助。
用JQUERY好像也可以,目前已经用XMLDOM实现IE8兼容,怎样修改变动量小点呢?谢谢。
...全文
1166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Times_ORZ 2015-04-01
  • 打赏
  • 举报
回复
我也在查同样的问题,后来改用ajax解决的

var xmlDoc = "";
$(function () {
    $.ajax({
        url: "js/Ctry/xml/area.xml",
        dataType: 'xml',
        type: 'GET',
        timeout: 2000,
        error: function (xml) {
            alert("加载XML 文件出错!");
        },
        success: function (xml) {
            xmlDoc = xml;
            var $s1 = $("#SelectProvince");
            var $s2 = $("#SelectCity");
            var $s3 = $("#SelectDistrict");
            var v1 = "北京市";
            var v2 = "北京辖区";
            var v3 = "东城区";
            var root = $(xmlDoc).find("address")[0];
            $(root).children("province").each(function () {
                appendOptionTo($s1, $(this).attr("name"), $(this).attr("name"), v1);
            });
            $s1.change(function () {
                $s2.html("");
                var province_node = $(root).children("province")[this.selectedIndex];
                $(province_node).children("city").each(function () {
                    appendOptionTo($s2, $(this).attr("name"), $(this).attr("name"), v2);
                });
                $s2.change();
            }).change();
            $s2.change(function () {
                $s3.html("");
                var province_node = $(root).children("province")[$s1[0].selectedIndex];
                var city_node = $(province_node).children("city")[this.selectedIndex];
                $(city_node).children("country").each(function () {
                    appendOptionTo($s3, $(this).attr("name"), $(this).attr("name"), v3)
                });
            }).change();
            function appendOptionTo($o, k, v, d) {
                var $opt = $("<option>").text(k).val(v);
                if (v == d) { $opt.attr("selected", "selected") }
                $opt.appendTo($o);
            }
        }
    });
});
save4me 2014-07-09
  • 打赏
  • 举报
回复
参考: XML Parser

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(txt); 
}
还可以参考: IE9 ActiveX filtering, XML Islands and Making the Workarounds to Get Things Work 如果是通过文件名加载,可以参考如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐)
save4me 2014-07-09
  • 打赏
  • 举报
回复
从IE9开始,MS越来越支持标准了。我不知道你查的资料是怎么说的,但是MSDN介绍IE9是有DOMParser对象的: DOMParser object
引用 2 楼 xunis 的回复:
我查资料DOMParser不支持IE ActiveXObject("Microsoft.XMLDOM");也不支持IE11
xunis 2014-07-09
  • 打赏
  • 举报
回复
引用 1 楼 save4me 的回复:
参考: XML Parser

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(txt); 
}
还可以参考: IE9 ActiveX filtering, XML Islands and Making the Workarounds to Get Things Work 如果是通过文件名加载,可以参考如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐)
我查资料DOMParser不支持IE ActiveXObject("Microsoft.XMLDOM");也不支持IE11
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") 'JAVASCRIPT中的创建对象 set objXml=CreateObject("Microsoft.XMLDOM") '创建解析器对象 objXml.async="false" objXml.load("test.xml") '装载xml文件 objXml.load(Server.MapPath("test.xml")) '根据绝对路径装载xml文件 Set objRootsite = xmlDoc.getElementsByTagName("NewList") '查找某一节点"NewList" objNextRootsiteName = xmlDoc.getElementsByTagName("NewList").item(0).nodeName Set objRootsite = objXml.documentElement.selectSingleNode("NewList") '查找某一节点"NewList" document.write(objRootsite.nodeName) '当前节点名称 objNextRootsite = objRootsite.childNodes.item(1) '查找"NewList"的第一子节点 objNextRootsiteText = objNextRootsite.childNodes.item(1).text '查找"NewList"的第一子节点的节点内容 xmlChildNode = objXml.documentElement.childNodes '获取当前节点 document.Write (xmlChildNode.nodename) '当前节点名称 document.write (xmlChildNode.text) '当前节点文本内容 frm.label.innerText = xmlChildNode.item(1).text '将Xml中的文本内容转换为Html中的内容 xmlChildNode.GetAttributeNode("name").Nodevalue '获取属性名为name的属性值 xmlChildNode.length 'xmlChildNode节点的子节点数量 '取出一个节点的属性集合 set objnodes=objXml.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes for each element in objnodes response.write element.nodename '属性名 response.write element.nodevalue '属性值 next xmlDoc.getElementsByTagName("from").item(0).text xmlDoc.removeChild objRootsite '删除某个节点 objXml.parseError '错误接受容器 objXml.parseError.errorCode '返回长整型错误代码 objXml.parseError.reason '返回字符串型错误原因 objXml.parseError.line '返回长整型错误行号 objXml.parseError.linePos '返回长整型错误行字符位置 objXml.parseError.srcText '返回错误所在行的源代码 objXml.parseError.url '返回url装载文档指针---最近一份含有解析错误的XML文档的URL地址 objXml.parseError.filePos '返回长整型错误文件位置---在文档中的绝对字符位置
JavaScript解析多子节点XML xml实例: <?xml version="1.0" encoding="GBK"?> JavaScript实例: <html> <head> [removed] function testXML(){ var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("ceshi.xml"); var node = xmlDoc.documentElement.selectNodes("/a/b/c/d"); var s = ""; for(var i=0;iXML();"/> </body> </html>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧