您好,欢迎访问一九零五行业门户网

XmlDocument 对象操作详细步骤

使用xmlreader遍历文档是很方便的,使用xmlwriter生成一个新的xml文档也很容易.但是对现有的xml进行修改,例如添加一个元素或修改一个属性值,就比较麻烦了.此时,可以使用xmldocument对象,通过调用dom方法对文档进行修改,然后再保存.由于dom已经进行了标准化,很多语言都对他进行了支持,比如js,因此这里的很多方法与js中都是一致的,比如getelementbyid(),getelementbytagname(),appendchild(),insertafter()等.
1、创建一个xml文件
xmldocument doc = new xmldocument(); xmldeclaration dec = doc.createxmldeclaration("1.0", "utf-8", null); doc.appendchild(dec); xmlelement root = doc.createelement("bookstore");//创建根节点 doc.appendchild(root); xmlelement newbook = _doc.createelement("book");//create a new 'book' element //set some attributes newbook.setattribute("genre", "mystery"); newbook.setattribute("publicationdate", "2001"); newbook.setattribute("isbn", "123456789"); //create a new 'title' element xmlelement newtitle = _doc.createelement("title"); newtitle.innertext = "case of the missing cookie"; newbook.appendchild(newtitle); //create new author element xmlelement newauthor = _doc.createelement("author"); newbook.appendchild(newauthor); //create new name element xmlelement newname = _doc.createelement("name"); newname.innertext = "cookie monster"; newauthor.appendchild(newname); //create new price element xmlelement newprice = _doc.createelement("price"); newprice.innertext = "9.95"; newbook.appendchild(newprice); //add to the current documentdoc.documentelement.appendchild(newbook);//_doc.documentelement为获取xml的根 doc.save("bb.xml");将 xml 文档保存到指定的位置
2、插入节点 与创建xml 文件类似
_doc.load("books.xml"); xmlelement newbook = _doc.createelement("book"); newbook.setattribute("genre", "mystery"); newbook.setattribute("publicationdate", "2001"); newbook.setattribute("isbn", "123456789"); xmlelement newtitle = _doc.createelement("title"); newtitle.innertext = "case of the missing cookie"; newbook.appendchild(newtitle); xmlelement newauthor = _doc.createelement("author"); newbook.appendchild(newauthor); xmlelement newname = _doc.createelement("name"); newname.innertext = "cookie monster"; newauthor.appendchild(newname); xmlelement newprice = _doc.createelement("price"); newprice.innertext = "9.95"; newbook.appendchild(newprice); _doc.documentelement.appendchild(newbook); _doc.save("booksedit.xml"); 或者下面这样保存 xmltextwriter tr = new xmltextwriter("booksedit.xml", null);//将xml文档保存,如果存在此文件,则覆盖 tr.formatting = formatting.indented; _doc.writecontentto(tr); tr.close();
3、修改xml节点
将genre属性值为“novel“的节点的genre值改为“updatenovel”,将该节点的子节点的文本修改为“啦啦啦啦”。
xmlnodelist nodelist=xmldoc.selectsinglenode("bookstore").childnodes;//获取bookstore节点的所有子节点 foreach(xmlnode xn in nodelist)//遍历所有子节点 { xmlelement xe=(xmlelement)xn;//将子节点类型转换为xmlelement类型 if(xe.getattribute("genre")=="novel")//如果genre属性值为“李赞红” { xe.setattribute("genre","updatenovel");//则修改该属性为“update李赞红” xmlnodelist nls=xe.childnodes;//继续获取xe子节点的所有子节点 foreach(xmlnode xn1 in nls)//遍历 { xmlelement xe2=(xmlelement)xn1;//转换类型 if(xe2.name=="title")//如果找到 { xe2.innertext="亚胜";//则修改 break;//找到退出来就可以了 } } break; } } xmldoc.save("bookstore.xml");//保存。
4、删除节点
节点的genre属性,删除 节点。
xmlnodelist xnl=xmldoc.selectsinglenode("bookstore").childnodes; foreach(xmlnode xn in xnl) { xmlelement xe=(xmlelement)xn; if(xe.getattribute("genre")=="fantasy") { xe.removeattribute("genre");//删除genre属性 } else if(xe.getattribute("genre")=="update李赞红") { xe.removeall();//删除该节点的全部内容 } } xmldoc.save("bookstore.xml");
5、遍历xml
string filepath = "bookstore.xml"; xmldocument doc = new xmldocument(); doc.load(filepath); xmlnode root = doc.documentelement; shownode(root); private static void shownode(xmlnode root) { if (root.nodetype==xmlnodetype.text) { console.writeline(root.value); } if (root.nodetype==xmlnodetype.element) { console.writeline(root.name); } if (root.attributes!=null&&root.attributes.count>0) { foreach (xmlattribute attr in root.attributes) { console.write("{0}={1} ",attr.name,attr.value); } console.writeline(); } xmlnodelist chiledlist = root.childnodes; foreach (xmlnode child in chiledlist) { shownode(child); } }
以上就是xmldocument 对象操作详细步骤的详细内容。
其它类似信息

推荐信息