用JS方式声明XML 直接在页面中用JS输出XML内容 不要调用XML了 何解?

JavaScript08

用JS方式声明XML 直接在页面中用JS输出XML内容 不要调用XML了 何解?,第1张

IE浏览器

var xmlDoc=new ActiveXObject(“Microsoft.XMLDOM”)

xmlDoc.async=“false”//同步加载方式

xmlDoc.load(“note.xml”)//加载文件

var txt ="<root>aaa</root>"

xmlDoc.loadXML(txt)//加载xml格式字符串

其他浏览器

//加载文件

var xmlDoc=document.implementation.createDocument(“”,“”,null)

xmlDoc.async=“false”

xmlDoc.load(“note.xml”)

//加载xml格式字符串

var txt ="<root>aaa</root>"

var parser=new DOMParser()

var doc=parser.parseFromString(txt,"text/xml")

跨浏览器访问是禁止的,xml文档与加载他的文件应该在同一个域名下

xml解析器加载xml文件或字符串后返回一个xml文档对象,然后可以使用该对象调用xml相关解析方法对加载的xml数据进行解析

1、用 childNodes 属性,按顺序取

实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。

//pId 待取节点父节点序号

//cId 待取节点序号

function getXmlNodeValue(pId, cId) {

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

    xmlDoc.async = false

xmlDoc.load("employeeInfo.xml")

var nodes = xmlDoc.documentElement.childNodes[pId].childNodes[cId]return nodes.childNodes[0].text

}

调用方法:alert(getXmlNodeValue(1, 2))

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。

//nodeValue 待取节点的所属节点值

function getXmlNodeValueFor(nodeValue){    

    var xmlDoc 

  try { 

    //创建一个 ie 支持的 XML 文档对象 

    xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

  }catch(e){

      try{

      //创建FireFox空的XML文档对象

      xmlDoc=document.implementation.createDocument("","",null)

}catch(e){

  alert(e.message)

  return ""

}

}

xmlDoc.async = false

try { 

    xmlDoc.load("employeeInfo.xml")

}catch(e){

    alert(e.message)

    return ""

}

var xd=xmlDoc.documentElement.childNodes

if(xd==null) 

    return ""

 var tempValue

for(var i=0i<xd.lengthi++){

    if(xd[i].childNodes[0].childNodes[0].nodeValue==nodeValue)        tempValue=xd[i].childNodes[2].childNodes[0].nodeValue

}

return tempValue

}

调用方法:alert(getXmlNodeValueFor("王佳琳"))

请把下面的代码保存为 readxml.html

<html>

<head>

<script type="text/javascript">

var xmlhttp

function loadXMLDoc(url)

{

xmlhttp=null

if (window.XMLHttpRequest)

  {// code for IE7, Firefox, Opera, etc.

  xmlhttp=new XMLHttpRequest()

  }

else if (window.ActiveXObject)

  {// code for IE6, IE5

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

  }

if (xmlhttp!=null)

  {

  xmlhttp.onreadystatechange=state_Change

  xmlhttp.open("GET",url,true)

  xmlhttp.send(null)

  }

else

  {

  alert("Your browser does not support XMLHTTP.")

  }

}

function state_Change()

{

if (xmlhttp.readyState==4)

  {// 4 = "loaded"

  if (xmlhttp.status==200)

    {// 200 = "OK"

    document.getElementById('A1').innerHTML=xmlhttp.status

    document.getElementById('A2').innerHTML=xmlhttp.statusText

    

    document.getElementById('A3').innerHTML=xmlhttp.responseText

    }

  else

    {

    alert("Problem retrieving XML data:" + xmlhttp.statusText)

    }

  }

}

</script>

</head>

<body>

<h2>Using the HttpRequest Object</h2>

<p><b>Status:</b>

<span id="A1"></span>

</p>

<p><b>Status text:</b>

<span id="A2"></span>

</p>

<p><b>Response:</b>

<br /><span id="A3"></span>

</p>

<button onclick="loadXMLDoc('note.xml')">Get XML</button>

</body>

</html>

请把下面的文件保存未  note.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>