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文件中的所有的数据采用我读取数据的方式读取出来,如果这种方法实在是读取不出来,就请帮我推荐一种新的方法。谢谢! 展开
<?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文件中的所有的数据采用我读取数据的方式读取出来,如果这种方法实在是读取不出来,就请帮我推荐一种新的方法。谢谢! 展开
4个回答
展开全部
不要用childNodes[x] 去取,会弄的你头晕脑胀,不知道选到哪个节点。用 selectSingleNode(xPath)来解决
比如你读不出来的那个第三个节点。。。
var xn = xmlDoc2.documentElement.selectSingleNode("ChannelState/Record") ;
alert(xn.text) ;
如果要取 Signal 节点,那就是
xmlDoc2.documentElement.selectSingleNode("ChannelState/Signal") ;
就可以了。这样的写法清晰明了得多。而且如果你在 channelState节点前面加入了其他节点的话,也不会影响到你的代码。
这个xPath就是路径,从最左边开始根节点下的节点的名字,然后一层层写下去,跟文件夹的路径差不多。
比如你读不出来的那个第三个节点。。。
var xn = xmlDoc2.documentElement.selectSingleNode("ChannelState/Record") ;
alert(xn.text) ;
如果要取 Signal 节点,那就是
xmlDoc2.documentElement.selectSingleNode("ChannelState/Signal") ;
就可以了。这样的写法清晰明了得多。而且如果你在 channelState节点前面加入了其他节点的话,也不会影响到你的代码。
这个xPath就是路径,从最左边开始根节点下的节点的名字,然后一层层写下去,跟文件夹的路径差不多。
展开全部
你直接复制过去吧,自己调用
<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>
<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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
child,再child很容易搞错的嘛,ajax取到的xml包装过了,就是一个dom,
用dom的方法,直接用标签名取就不容易错了
用dom的方法,直接用标签名取就不容易错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是用PHP读取的,PHP5中自带的DOM处理XML文件非常方便,你可以去试试,如果需要的话也可以再找我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询