WWW.CSHARPVN.COM C# Cơ Bản Biên tập:salomit Nguồn: Mr Dot Net XML và C# 1.Giới thiệu XML XML(extensible mark up language) ðược thiết kế ñể khắc phục những khó khăn mà của HTML XML là tập hợp những quy tắc ñịnh nghĩa theo từng Tag riêng biệt, không giống như HTML, những tag Của XML không ñược ñịnh nghĩa trước XML ñược phát triển ñể mang dữ liệu XML sử dụng một trong hai DTD h Hoặc XML schemas dùng ñể mô tả dữ liệu Và tạo nên mô tả của chính nó 2.Những ñặc tính của XML ñược tổ chức W3c ñề nghị gồm những -Những tag không ñịnh nghĩa trước -Kết thúc một tag mở là một tag ñóng -Có phân biệt chữ hoa và chữ thường -Những tag có thể lòng vào nhău -Một file xml chỉ có một root element -Chú thích(comment) tương tự như HTML -Các node cha và con có mối tương quan giửa các thành phần -Kiểu nội dung trong mổi thành phần là khác nhău -tên ñược ñặt Tuân theo các quy tắc ñặt tên thông thường khác 3Tại sao .net lại cần ñến XML XML ñơn giản, ñộc lập với nền tảng , cấu trúc dữ liệu tách biệt với Giao diện người dùng. XML có thể ñược dùng ñể quốc tế hóa Một ứng dụng .NET bởi vì nó dựa vào ñịnh dạng UNICODE 4. ví dụ demo một số thao tác với fiel xml trên C# <?xml version="1.0"?> <Persons> <PersonID ID="ID1"> <Name>Jane Doe</Name> <Address1>LeNin Part</Address1> <Address2>London street</Address2> <City>New York</City> <Salary>500</Salary> </PersonID> <PersonID ID="ID2"> <Name>tinh</Name> <Address1>125 box</Address1> <Address2>34 any</Address2> <City>New York</City> <Salary>6788</Salary> <Phoneno>012541334</Phoneno> </PersonID> </Persons> WWW.CSHARPVN.COM C# Cơ Bản Biên tập:salomit Nguồn: Mr Dot Net tạo một class như său namespace XML1 { class XML { public void writeXml() { // create path of file xmlFile.txt string path = @"D:\xmlFile.txt"; //create instance XmlTextWriter xmlwt = new XmlTextWriter(path,null); // format file xml xmlwt.Formatting = Formatting.Indented; xmlwt.Indentation = 6; xmlwt.WriteStartDocument(); xmlwt.WriteStartElement("","Persons","");//start person xmlwt.WriteStartElement("", "PersonID", "");// start personID xmlwt.WriteStartAttribute("ID"); xmlwt.WriteString("ID1"); xmlwt.WriteEndAttribute(); xmlwt.WriteStartElement("", "Name", ""); xmlwt.WriteString("Jane Doe"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Address1", ""); xmlwt.WriteString("LeNin Part"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Address2", ""); xmlwt.WriteString("London street"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "City", ""); xmlwt.WriteString("New York"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Salary", ""); xmlwt.WriteValue(456); xmlwt.WriteEndElement(); xmlwt.WriteEndElement();// end personID xmlwt.WriteStartElement("", "PersonID", "");// start personID xmlwt.WriteStartAttribute("ID"); xmlwt.WriteString("ID2"); xmlwt.WriteEndAttribute(); xmlwt.WriteStartElement("", "Name", ""); xmlwt.WriteString("JMaris"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Address1", ""); xmlwt.WriteString("125 box"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Address2", ""); WWW.CSHARPVN.COM C# Cơ Bản Biên tập:salomit Nguồn: Mr Dot Net xmlwt.WriteString("34 any"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "City", ""); xmlwt.WriteString("New York"); xmlwt.WriteEndElement(); xmlwt.WriteStartElement("", "Salary", ""); xmlwt.WriteValue(1235); xmlwt.WriteEndElement(); xmlwt.WriteEndElement(); xmlwt.WriteEndElement(); xmlwt.Flush(); xmlwt.Close(); Console.WriteLine("creat xml file is sucessfuly"); } xuất dữ liệu từ file xml lên màn hình public void readXml() { string path = @"D:\xmlFile.txt"; XmlTextReader xmlr = new XmlTextReader(path); while (xmlr.Read()) { if (xmlr.NodeType == XmlNodeType.Element) { if(xmlr.LocalName.Equals("Name")){ Console.WriteLine("Name of person{0} ",xmlr.ReadString()); } if(xmlr.LocalName.Equals("Address1")){ Console.WriteLine("Address1 of person {0} ", xmlr.ReadString()); } if (xmlr.LocalName.Equals("Address2")) { Console.WriteLine("Address2 of person{0}: ", xmlr.ReadString()); } if (xmlr.LocalName.Equals("City")) { Console.WriteLine("City of person{0}: ",xmlr.ReadString()); } if (xmlr.LocalName.Equals("Salary")) { Console.WriteLine("Salary of person{0}: ",xmlr.ReadString()); } } } Console.ReadLine(); } sử dụng Xpath ñể truy cập ñến từng nod của file XML // demo using Xpath public void usingXpath() { XmlDocument node = new XmlDocument(); node.Load(@"D:\xmlFile.txt"); WWW.CSHARPVN.COM C# Cơ Bản Biên tập:salomit Nguồn: Mr Dot Net // using xmlNode XmlNode rootnode = node.DocumentElement; // display name details XmlNode nodename = rootnode.SelectSingleNode("//Name"); Console.WriteLine(nodename.InnerText); // display only second name details XmlNode nodename1 = rootnode.SelectSingleNode("//Name[1]"); Console.WriteLine(nodename1.InnerText); //using xmlNodeList to display Name details in xml document Console.WriteLine(); XmlNodeList nodelist = rootnode.SelectNodes(".//PersonID"); foreach (XmlNode nodes in nodelist) { Console.WriteLine(nodes.InnerText+" "+"\n"); } // display details of person have id =2 XmlNodeList nodelistid = rootnode.SelectNodes(".//PersonID[@ID='ID1']"); foreach (XmlNode nodes in nodelistid) { Console.WriteLine(nodes.InnerText + " " + "\n"); } // >>> XmlNodeList nodelistidsa = rootnode.SelectNodes(".//PersonID[Salary<344]"); foreach (XmlNode nodes in nodelistid) { Console.WriteLine(nodes.InnerText + " " + "\n"); } } Chỉnh sửa một node bất kỳ từ file xml ñã ñược tạo ở trên public void editXml() { //XmlDocument edit = new XmlDocument(); //string path; //edit.Load(@"D:\xmlFile.txt"); //XmlNode node; //node = edit.DocumentElement; //foreach (XmlNode nodwtwo in node.ChildNodes) // if (nodwtwo.Name == "City") // { // if (nodwtwo.InnerText == "JMaris") // { // string newname; // Console.WriteLine("Enter new name"); // newname = Console.ReadLine(); // nodwtwo.InnerText = newname; // } // } //edit.Save(@"D:\xmlFile.txt"); string filename = @"D:\xmlFile.txt"; XmlDocument mydoc = new XmlDocument(); mydoc.Load(filename); XmlElement root=mydoc.DocumentElement; XmlNode mynode; mynode = root.SelectSingleNode("/Persons/PersonID[@ID='ID2']/Name"); mynode.InnerText = "tinh"; mydoc.Save(@"D:\xmlFile.txt"); WWW.CSHARPVN.COM C# Cơ Bản Biên tập:salomit Nguồn: Mr Dot Net Console.WriteLine("edit is sucessfuly"); } Thêm một phàn tử mới vào file xml public void addnew() { string filename=@"D:\xmlFile.txt"; XmlDocument mydoc = new XmlDocument(); mydoc.Load(filename); XmlElement newelement = mydoc.CreateElement("Phoneno"); newelement.InnerText="012541334"; XmlElement root = mydoc.DocumentElement; XmlNode oddnode; oddnode = root.SelectSingleNode("/Persons/PersonID[@ID='ID2']"); oddnode.AppendChild(newelement); mydoc.Save(@"D:\xmlFile.txt"); Console.WriteLine("add new element is sucessfuly"); } lớp ñể triệu gọi các phương thức chứa hàm main ñể thực thi chương trình class Program { static void Main(string[] args) { XML objXML = new XML(); objXML.writeXml(); Console.WriteLine("write xml is cucessfuly"); objXML.readXml(); objXML.xmlNode(); objXML.usingXpath(); objXML.editXml(); objXML.addnew(); Console.ReadKey(); } } dowload sourcode tại links său http://www.mediafire.com/?jl5yfzyxqi1http://www.mediafire.com/?jl5yfzyxqi1 máy bạn phải cài Vilsua Studio ít nhất là bản 2008 trở về său . { XML objXML = new XML( ); objXML.writeXml(); Console.WriteLine("write xml is cucessfuly"); objXML.readXml(); objXML.xmlNode(); objXML.usingXpath(); objXML.editXml();. @"D:xmlFile.txt"; //create instance XmlTextWriter xmlwt = new XmlTextWriter(path,null); // format file xml xmlwt.Formatting = Formatting.Indented; xmlwt.Indentation = 6; xmlwt.WriteStartDocument();. path = @"D:xmlFile.txt"; XmlTextReader xmlr = new XmlTextReader(path); while (xmlr.Read()) { if (xmlr.NodeType == XmlNodeType.Element) { if(xmlr.LocalName.Equals("Name")){