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 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", ""); ///设置根结点RequestInfoElement = XmlDoc.createElement("PollTime"); //设置一个结点
Element.text = '2'; //赋值
Root.appendChild(Element);//将它放在根下面
var GroupInfoNode = XmlDoc.createNode(1, "GroupInfo", ""); //设置了一个空结点GroupInfo
Element = XmlDoc.createElement("DataServerIp");
Element.text = “127.0.0.1”;GroupInfoNode.appendChild(Element); ///将DataServerIp放在GroupInfo之下,成为其子结点
var LaneInfoNode = XmlDoc.createNode(1, "LaneInfo", ""); ///设置Laneinfo空结点
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下放groupXmlDoc.appendChild(Root); 生成了xmlDoc,即xml文件