js读取xml文本? /** * 得到XML文件属性的集合对象 * @param xmlDoc XML对象 * @param name 属性名称 如: user * @return 返回 Array 对象 * Example XML: * <?xml version='1.0' encoding='utf-8'?> * <ekuy> * <user> * <name> * <cnname>小猪</cnname> * </name> * <age>27</age> * </user> * <user> * <name> * <cnname>小霞</cnname> * </name> * <age>26</age> * </user> * </ekuy> */function getXMLArray(xmlDoc, name) { var keys = name.split('.'); var node = xmlDoc.documentElement; // 得到根节点 var rtn = new Array(); var n = 0; for(var i=0; i<keys.length; i++) { var childs = node.childNodes; // 得到子节点 var key = keys[i]; for(var k=0; k<childs.length; k++) { var child = childs[k]; if(child.nodeName == key) { // 判断子节点是否符合 if(i == keys.length-1) { rtn[n] = child; n++; } else { node = child; break; } } } } return rtn;}/** * 得到由getXMLArray函数得到对象中的值 * @param node 节点对象 * @param name * @return 返回 String */function getValue(node, name) { var keys = name.split('.'); for(var i=0; i<keys.length; i++) { var childs = node.childNodes; // 得到子节点 var key = keys[i]; for(var k=0; k<childs.length; k++) { var child = childs[k]; if(child.nodeName == key) { // 判断子节点是否符合 if(child.childNodes.length == 1) { // 如果没有字节点,返回值 return child.text; } else { // 还有子节点,继续分析 node = child; break; } } } } return "";}// 测试:var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async = false;xmlDoc.loadXML("<?xml version='1.0' encoding='utf-8'?><ekuy><user><name><cnname>小猪</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>");var list = getXMLArray(xmlDoc, 'user');for(var i=0; i<list.length; i++) { var obj = list[i]; document.write(getValue(obj, 'name.cnname')); document.write(getValue(obj, 'age')); document.write('<br\/>');} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把xml文本存为XMLFile.xml并在其目录下新建一html文件 <input id="Button1" type="button" value="get" onclick="getData()" />String.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, "");}function getXmlDoc(){ var xmlDoc=null; 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); return; } } xmlDoc.async=false; return xmlDoc;}function getData(){ var xmlDoc=getXmlDoc(); xmlDoc.load("XMLFile.xml"); var ids=xmlDoc.documentElement.getElementsByTagName('ID'); var str=''; for(var i=0;i<ids.length;i++) { str+=ids[i].childNodes[0].nodeValue.trim()+','; } alert(str);} XML: a.xml<?xml version="1.0" encoding="utf-8"?><root> <ID>1</ID> <ID>2</ID> <ID>3</ID> <ID>4</ID></root>Html:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><script language="javascript" src="smAjax.js"></script><script language="javascript">function Init(){ var ai = new ajaxInfo("a.xml"); ai.requestType = "XML"; ai.okFunc = function() { var objs = ai.container.documentElement.getElementsByTagName("ID"); var ary = new Array(); for(var i=0; i<objs.length;i++) { ary.push(objs[i].text); } alert(ary.join(",")); } ai.get();}</script></head><body onload="Init()"> <span id="sp1"></span></body></html>用到的Js库文件地址:smajax.js【封装了Ajax操作】http://www.wirysoft.com/js/smajax.js 顺便说句,在IE里边取Xml节点值,是用的 节点.text 在Firefox里是用的节点.textContent 求一个正则 如何过滤留言时输入的特殊字符 js表单验证后再提交 获取页面对象的问题 求教js传递表单数据到弹出子页面的写法 用JS怎么控制图片的大小,和长宽? 原生javascript如何检测DOM加载完毕? 關於document.documentElement.outerHTML的問題 请问 单击是 onclick 那么 单击右键呢 ,还有双击 已知程序文件的完整路径,怎么用 javascript打开它呢?拜托了………… 如何让两个input 在编辑和不可编辑间切换? 关于JAVASCRIPT的问题,我的水平差,希望有高手帮帮我!
并在其目录下新建一html文件 <input id="Button1" type="button" value="get" onclick="getData()" />
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}function getXmlDoc()
{
var xmlDoc=null;
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);
return;
}
}
xmlDoc.async=false;
return xmlDoc;
}
function getData()
{
var xmlDoc=getXmlDoc();
xmlDoc.load("XMLFile.xml"); var ids=xmlDoc.documentElement.getElementsByTagName('ID');
var str='';
for(var i=0;i<ids.length;i++)
{
str+=ids[i].childNodes[0].nodeValue.trim()+',';
}
alert(str);
}
<root>
<ID>1</ID>
<ID>2</ID>
<ID>3</ID>
<ID>4</ID>
</root>
Html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript" src="smAjax.js"></script>
<script language="javascript">
function Init()
{
var ai = new ajaxInfo("a.xml");
ai.requestType = "XML";
ai.okFunc = function()
{
var objs = ai.container.documentElement.getElementsByTagName("ID");
var ary = new Array();
for(var i=0; i<objs.length;i++)
{
ary.push(objs[i].text);
}
alert(ary.join(","));
}
ai.get();
}
</script>
</head>
<body onload="Init()">
<span id="sp1"></span>
</body>
</html>
用到的Js库文件地址:smajax.js【封装了Ajax操作】http://www.wirysoft.com/js/smajax.js
顺便说句,在IE里边取Xml节点值,是用的
节点.text