许多新手对MSXML如何操作XML不太了解。我下面把一些常用的操作整理成一个例子,供大家参考。
假设XML文件名:test.xml
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
下面是JS操作XML的代码:
<script language="javascript">
var theBook, theElem, root;
var xmldoc=new ActiveXObject("MSXML2.DOMDOCUMENT.3.0");
xmldoc.async=false;
xmldoc.load("test.xml");
root=xmldoc.documentElement;
alert(xmldoc.xml)
//--- 新建一本书开始 ----
theBook=xmldoc.createElement("book");
theElem=xmldoc.createElement("name");//创建元素name
theElem.text="新书";//设置name的文本值为"新书"
theBook.appendChild(theElem);//把name添加到theBook下面
theElem=xmldoc.createElement("price");
theElem.text="20";
theBook.appendChild(theElem);
theElem=xmldoc.createElement("memo");
theElem.text="新书的更好看。";
theBook.appendChild(theElem);
root.appendChild(theBook);
alert(xmldoc.xml);
//--- 新建一本书完成 ----
//--- 下面对《哈里波特》做一些修改。 ----
//--- 查询找《哈里波特》----
theBook=root.selectSingleNode("/books/book[name='哈里波特']");
alert(theBook.xml);
//--- 此时修改这本书的价格 -----
theBook.childNodes[1].text="15";//price是第二个元素,即childNodes[1]
alert(theBook.xml);
//--- 另外还想加一个属性id,值为B01 ----
theBook.setAttribute("id", "B01");
alert(theBook.xml);
//--- 对《哈里波特》修改完成。 ----
//--- 要用id属性删除《三国演义》这本书 ----
theBook=root.selectSingleNode("/books/book[@id='B02']");
alert(theBook.xml);
theBook.parentNode.removeChild(theBook);
alert(xmldoc.xml);
//--- 再将所有价格低于10的书删除 ----
var someBooks=root.selectNodes("/books/book[price<10]");
someBooks.removeAll();
alert(xmldoc.xml);
//xmldoc.save("test3.xml"); //保存,受权限限制,一般只在ASP中使用。
</script>