javascript读取xml文件

KissTwo_Xiong 2008-09-16 03:40:02
有这样一个格式的xml,怎样用javascript把他读取出来并显示在html下拉框里。
<?xml version="1.0" encoding="utf-8"?>
<camera_list>
<info content="success" />
<camera sn="1001101E000612250000112C" name="经理室外" ip="220.160.148.218" port="0" />
<camera sn="1001101E0006122500004WMY" name="仓库南墙" ip="220.160.148.218" port="0" />
<camera sn="1001101E000612260011336N" name="车间南墙" ip="220.160.148.218" port="0" />
<camera sn="1001101E000612250003612W" name="前厅东墙" ip="220.160.148.218" port="0" />
<camera sn="1001101E00061226001548QS" name="过道" ip="220.160.148.218" port="0" />
<camera sn="1001101E0006122500084VH4" name="研发窗口" ip="220.160.148.218" port="0" />
</camera_list>
...全文
461 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
peterb 2008-09-17
  • 打赏
  • 举报
回复
因为firefox没有直接支持xpath吧 /camera_list
zixr365 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 KissTwo_Xiong 的回复:]
这个格式我每次
var MovieList = xmlDoc.documentElement.selectNodes("/camera_list");
取得的长度都是0
[/Quote]

帮顶一下,我也是这个问题。在IE里面可以取到值,在firefox中总是取不到,显示的长度为0。希望高手们来解答啊!
luyuans86 2008-09-16
  • 打赏
  • 举报
回复
我有个方法,你用一个js进行封装,专门是显示一个下拉框
//就是在select.js文件里就把下拉框写进去,直接把数据遍历到里面去
function initialize()//窗口加载方法
{
var xmlDoc;
if(window.ActiveXObject)//判断浏览器是否支持ActiveX控件 window.AxtiveXObject
{
//载入解析器
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");//实例化DOM对象xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false";
xmlDoc.load("xml");//加载文件,xmlDoc.loadXml():加载文本
return(xmlDoc);
}else if(document.implementation&&document.implementation.createDocument) //在Firefox及其他浏览器中的xml解析器
{
xmlDoc=document.implementation.createDocument("","",null);
//xmlDoc.onload=handleXmlDoc();
xmlDoc.load("xml");
return(xmlDoc);
}

}
function selectXml()
{
var xmlDoc=initialize();
var root=xmlDoc.documentElement;
var profession=root.getElementsByTagName("info");
document.body.innerHTML+="<select name=s1>";
var length=profession[0].childNodes.length;
for(var i=0;i<length;i++)
{
document.body.innerHTML+=
"<option value='"+profession[0].childNodes[i].getAttribute("sn")+"'>"+profession[0].childNodes[i].getAttribute("name")+"</option>";
}
document.body.innerHTML+="</select>";
}
然后在把这个js同上导入到html页面上去,
在某个地方调用这个selectXml()方法即可,
你可以试试,

KissTwo_Xiong 2008-09-16
  • 打赏
  • 举报
回复
这个格式我每次
var MovieList = xmlDoc.documentElement.selectNodes("/camera_list");
取得的长度都是0
wuchao911 2008-09-16
  • 打赏
  • 举报
回复
var   xml   =   new   ActiveXObject("Msxml2.DOMDocument");   
xml.loadXML('<root><item value="abc">test</item></root>');
if(xml.parseError.errorCode != 0){
alert(xml.parseError.reason);
}
var xmlDoc = xml.documentElement;
alert(xmlDoc.firstChild.getAttribute("value")); //returns 'abc'
alert(xmlDoc.firstChild.text); //returns 'test'
alert(xmlDoc.getElementsByTagName("item")[0].text); //also returns 'test'
wuchao911 2008-09-16
  • 打赏
  • 举报
回复
var   xml   =   new   ActiveXObject("Msxml2.DOMDocument");   
xml.loadXML('<root><item value="abc">test</item></root>');
if(xml.parseError.errorCode != 0){
alert(xml.parseError.reason);
}
var xmlDoc = xml.documentElement;
alert(xmlDoc.firstChild.getAttribute("value")); //returns 'abc'
alert(xmlDoc.firstChild.text); //returns 'test'
alert(xmlDoc.getElementsByTagName("item")[0].text); //also returns 'test'
cftea 2008-09-16
  • 打赏
  • 举报
回复
如果你只要在 IE 中用,可以用 数据岛:http://www.cftea.com/c/787.asp
当然也可以利用 Ajax 来处理,这兼容于所有的浏览器,http://www.cftea.com/specials/ajax/
取的例:
xmlhttp.responseXML.getElementsByTagName("title")[0].firstChild.nodeValue

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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