Home  >  Article  >  Backend Development  >  Detailed steps for XmlDocument object operations

Detailed steps for XmlDocument object operations

PHPz
PHPzOriginal
2017-03-12 15:55:462180browse

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,

Delete

node 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");

5. Traverse 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn