javascript读取xml文件

//xml文件<?xmlversion='1.0'?><ServerWorkState><ServerStatic>dwServerStatic</ServerStati... //xml文件
<?xml version='1.0'?>
<ServerWorkState>
<ServerStatic>dwServerStatic< /ServerStatic> //设备的状态
<LocalShowStatic> dwLocalShowStatic < /LocalShowStatic> //本地显示状态

<ChannelState>
<Record> byRecord < /Record> //是否在录像
<Signal> bySignal < /Signal> //连接的信号状态
<HardWareStatic>byHardWareStatic</HardWareStatic>//通道硬件状态
<BitRate> byBitRate </BitRate> //实际码率
<LinkNum> byLingkNum </LinkNum> //连接的个数
</ChannelState>

<HardDiskState>
<Volume>byVolume</Volume> //硬盘容量
<FreeSpace>byFreeSpace< /FreeSpace> //硬盘的剩余空间
<HardDiskStatic>byHardDiskStatic</HardDiskStatic>//硬盘的状态
</HardDiskState>
</ServerWorkState>

//getServerWorkState()方法返回值就是上边的xml文件。
workState = m_bDVRControl.GetServerWorkState();
var xmlDoc2 = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc2.async="false"
xmlDoc2.loadXML(workState);
var devState = xmlDoc2.documentElement.childNodes[0].childNodes[0].nodeValue;
var localState = xmlDoc2.documentElement.childNodes[1].childNodes[0].nodeValue);
//三级时,读取不到正确值
var recordOrNot = xmlDoc2.documentElement.childNodes[0].childNodes[2].childNodes[0].nodeValue);
//三级时,读取不到正确值
xmlDoc2.documentElement.childNodes[1].childNodes[2].childNodes[0].nodeValue);

请帮我把xml文件中的所有的数据采用我读取数据的方式读取出来,如果这种方法实在是读取不出来,就请帮我推荐一种新的方法。谢谢!
展开
 我来答
战砜名彩虞圈9
2011-03-30 · TA获得超过280个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:109万
展开全部
不要用childNodes[x] 去取,会弄的你头晕脑胀,不知道选到哪个节点。用 selectSingleNode(xPath)来解决
比如你读不出来的那个第三个节点。。。
var xn = xmlDoc2.documentElement.selectSingleNode("ChannelState/Record") ;
alert(xn.text) ;
如果要取 Signal 节点,那就是
xmlDoc2.documentElement.selectSingleNode("ChannelState/Signal") ;
就可以了。这样的写法清晰明了得多。而且如果你在 channelState节点前面加入了其他节点的话,也不会影响到你的代码。
这个xPath就是路径,从最左边开始根节点下的节点的名字,然后一层层写下去,跟文件夹的路径差不多。
515634s
2011-03-24 · 超过35用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:90.2万
展开全部
你直接复制过去吧,自己调用
<script language="javascript">
function readxml()
{
var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
xmldoc.load("1.xml"); //改成你XML文件路径
var first=xmldoc.documentElement.childNodes;
for(var i=0;i<first.length;i++){
if(first[i].childNodes[0].nodeType!=1)
document.write(first[i].nodeName+":"+first[i].text+"<br />");
else
{
for(var j=0;j<first[i].childNodes.length;j++)
document.write(first[i].childNodes[j].nodeName+":"+first[i].childNodes[j].text+"<br/>");

}
}

}

</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
殒尘
2011-03-20 · TA获得超过473个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:365万
展开全部
child,再child很容易搞错的嘛,ajax取到的xml包装过了,就是一个dom,
用dom的方法,直接用标签名取就不容易错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuyunbozust
2011-03-20
知道答主
回答量:26
采纳率:0%
帮助的人:14.7万
展开全部
我是用PHP读取的,PHP5中自带的DOM处理XML文件非常方便,你可以去试试,如果需要的话也可以再找我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式