js生成xml文件及js读取xml文件,获得xml节点子节点的个数(同Extjs中树获得子结点个数)...

1.先说js读取xml文件吧:

//var szXml= OCX.GetXmlInfo(); ///得到xml的串

Demo:

var szXml = "<?xml version=\"1.0\"?><Root><PreviewInfo><PreviewType>1</PreviewType></PreviewInfo>"
+ "<NormalGroup><CountNum>4</CountNum>"
+ "<LaneInfo><Ioid>io1</Ioid ><Laneid>lane1</Laneid><WndIndex>wndindex1</WndIndex>"
+ "<Ioid>io2</Ioid ><Laneid>lane2</Laneid><WndIndex>wndindex2</WndIndex> "
+ "<Ioid>io3</Ioid ><Laneid>lane3</Laneid><WndIndex>wndindex3</WndIndex></LaneInfo > "
+ "</NormalGroup></Root>";

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); ///建立模型

xmlDoc.async = "false";

xmlDoc.loadXML(szXml);

注意:在写xmlDoc.documentElement时,已经定位到了root节点之下。

而后,在用xmlDoc.documentElement.childNodes[0]时,便找到了PreviewInfo节点,而它的子节点,就是PreviewType,但要小心,PreviewType的值不是1,数值1也是一个节点,所以在用xmlDoc.documentElement.childNodes[0].childNodes[0]之后,需要再用一次childNodes[0],此时定位到了1节点,而用此节点的nodeValue属性,就拿到了1

不信的话,就alert(xmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].nodeValue);可以看到1了吧。。。


然后其他的呢,就可以以此类推了:

xmlDoc.documentElement.childNodes[1].childNodes[1].childNodes[0].nodeValue; 这个值就是io1了。。。。。。

然后呢,我们要知道一个节点下有多少个子节点,方法是:

var tmp = xmlDoc.documentElement.childNodes[1].childNodes[1].childNodes;
alert(tmp.length);



2.用js生成xml文件:


var GroupNode = ResConfigTree.getNodeById(szNodeID); ///得到树中被点击的结点
var XmlDoc = new ActiveXObject("MSXML2.DOMDocument");
var Instruction = XmlDoc.createProcessingInstruction("xml","version='1.0' encoding='utf-8'");

XmlDoc.appendChild(Instruction);

var Root = XmlDoc.createNode(1, "RequestInfo", ""); ///设置根结点RequestInfo

Element = XmlDoc.createElement("PollTime"); //设置一个结点
Element.text = '2'; //赋值

Root.appendChild(Element);//将它放在根下面


var GroupInfoNode = XmlDoc.createNode(1, "GroupInfo", ""); //设置了一个空结点GroupInfo


//var GroupLaneCountNode = XmlDoc.createNode(1, "GroupLaneCount", "");//设置了另一个空结点

Element = XmlDoc.createElement("DataServerIp");

Element.text = “127.0.0.1”;

GroupInfoNode.appendChild(Element); ///将DataServerIp放在GroupInfo之下,成为其子结点


var LaneInfoNode = XmlDoc.createNode(1, "LaneInfo", ""); ///设置Laneinfo空结点


Element = XmlDoc.createElement("LaneCount");
Element.text = '1';
LaneInfoNode.appendChild(Element); //将LaneCount放在其下



GroupNode.eachChild(function(_node){ ///遍历被点击的树结点下面的所有子结点,将它们的属性放在xml中,放在LaneInfo结点之下
Element = XmlDoc.createElement("IOSN");
Element.text = _node.attributes.ioid;
LaneInfoNode.appendChild(Element);

Element = XmlDoc.createElement("LaneSN");
Element.text = _node.attributes.sn;
LaneInfoNode.appendChild(Element);

Element = XmlDoc.createElement("PlayNum");
Element.text = iPalyNum;
LaneInfoNode.appendChild(Element);

});

GroupInfoNode.appendChild(LaneInfoNode); 将Laneinfo结点放在Goupinfo结点下

Root.appendChild(GroupInfoNode); group节点挂在根上 RequestInfo下放group
XmlDoc.appendChild(Root); 生成了xmlDoc,即xml文件


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值