You can create a XML File using XMLWriter class.
XMLWriter class available in System.XML namespace.
This will give proper indentation and create Well formed XML File.
Here is example for this.
In this example we create BookList.xml file with different Elements and Attributes.
C# Example :
VB.net Example :
Output (Generated XML) :
XMLWriter class available in System.XML namespace.
This will give proper indentation and create Well formed XML File.
Here is example for this.
In this example we create BookList.xml file with different Elements and Attributes.
C# Example :
XmlWriterSettings objSetting = new XmlWriterSettings(); objSetting.Indent = true; objSetting.NewLineOnAttributes = true; System.Text.StringBuilder sb = new System.Text.StringBuilder(); using (XmlWriter objWriter = XmlWriter.Create(sb, objSetting)) { //Note the artificial, but useful, indenting objWriter.WriteStartDocument(); objWriter.WriteStartElement("books"); ////////Start Book Element/////// objWriter.WriteStartElement("book"); objWriter.WriteStartAttribute("ISBN"); objWriter.WriteValue("asp1"); objWriter.WriteEndAttribute(); objWriter.WriteStartElement("Title"); objWriter.WriteValue("ASP.NET"); objWriter.WriteEndElement(); objWriter.WriteElementString("ReleaseDate", "11/11/2010"); objWriter.WriteStartElement("Pages"); objWriter.WriteValue(200); objWriter.WriteEndElement(); //price objWriter.WriteEndElement(); //book ////////End Book Element/////// ////////Another Element ////////Start Book Element/////// objWriter.WriteStartElement("book"); objWriter.WriteStartAttribute("ISBN"); objWriter.WriteValue("c#2"); objWriter.WriteEndAttribute(); objWriter.WriteStartElement("Title"); objWriter.WriteValue("C#.NET"); objWriter.WriteEndElement(); objWriter.WriteElementString("ReleaseDate", "10/11/2010"); objWriter.WriteStartElement("Pages"); objWriter.WriteValue(500); objWriter.WriteEndElement(); objWriter.WriteEndElement(); //book ////////End Book Element/////// objWriter.WriteEndElement(); //books objWriter.WriteEndDocument(); } File.WriteAllText(Server.MapPath("BooksList.xml"), sb.ToString());
VB.net Example :
Dim objSetting As New XmlWriterSettings() objSetting.Indent = True objSetting.NewLineOnAttributes = True Dim sb As New System.Text.StringBuilder() Using objWriter As XmlWriter = XmlWriter.Create(sb, objSetting) 'Note the artificial, but useful, indenting objWriter.WriteStartDocument() objWriter.WriteStartElement("books") ''''Start Book Element objWriter.WriteStartElement("book") objWriter.WriteStartAttribute("ISBN") objWriter.WriteValue("asp1") objWriter.WriteEndAttribute() objWriter.WriteStartElement("Title") objWriter.WriteValue("ASP.NET") objWriter.WriteEndElement() objWriter.WriteElementString("ReleaseDate", "11/11/2010") objWriter.WriteStartElement("Pages") objWriter.WriteValue(200) objWriter.WriteEndElement() objWriter.WriteEndElement() 'book ''''End Book Element ''''Another Element ''''Start Book Element objWriter.WriteStartElement("book") objWriter.WriteStartAttribute("ISBN") objWriter.WriteValue("c#2") objWriter.WriteEndAttribute() objWriter.WriteStartElement("Title") objWriter.WriteValue("C#.NET") objWriter.WriteEndElement() objWriter.WriteElementString("ReleaseDate", "10/11/2010") objWriter.WriteStartElement("Pages") objWriter.WriteValue(500) objWriter.WriteEndElement() objWriter.WriteEndElement() 'book ''''End Book Element objWriter.WriteEndElement() 'books objWriter.WriteEndDocument() End Using File.WriteAllText(Server.MapPath("BooksList.xml"), sb.ToString())
Output (Generated XML) :
<?xml version="1.0" encoding="utf-16"?> <books> <book ISBN="asp1"> <Title>ASP.NET</Title> <ReleaseDate>11/11/2010</ReleaseDate> <Pages>200</Pages> </book> <book ISBN="c#2"> <Title>C#.NET</Title> <ReleaseDate>10/11/2010</ReleaseDate> <Pages>500</Pages> </book> </books>
Note : Give
Us your valuable feedback in comments. Give your suggestions in this
article so we can update our articles accordingly that.
Thanks so much. This really helpse!
ReplyDeleteI have a situation where the attribute of an element contain the character ":" (
When I use the vb.net code as follows:
writer.WriteStartAttribute("xmlns:xsi")
VS2010 throws an error indicating that the character ":" is not allowed. Can you please advise as to how to get around this?
Thanks so much!
Justin