Home >Backend Development >XML/RSS Tutorial >Detailed steps for XmlDocument object operations
It is very convenient to traverse the document using Attribute value is more troublesome. At this time, you can use XmlDocumentobject to modify the document by calling the DOM method, and then save it. Since the DOM has been Standardized, many multi-language support it, such as JS, so many methods here are consistent with JS, such as GetElementByID(), GetElementByTagName(), App endChild(),InsertAfter(), etc.1. Create an xml file
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. Inserting nodes is similar to creating an xml file
_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. Modify the xml node
Change the genre value of the node with the genre attribute value "novel" to "updatenovel", and modify the text of the child node of the node to "la la la la".
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,
Deletenode The genre attribute of the node, delete the node.
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");
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); } }
The above is the detailed content of Detailed steps for XmlDocument object operations. For more information, please follow other related articles on the PHP Chinese website!