C#中创建与读取XML数据(一)

来源:互联网 发布:淘宝店激活实名认证 编辑:程序博客网 时间:2024/06/05 03:55

C#中创建与读取XML数据(一)

 --------------创建通过C#创建XML 

 

using System;
using
 System.Collections.Generic;
using
 System.Text;
using
 System.IO;        
using
 System.Xml;
using
 System.Data.SqlClient;

namespace
 xmlDemo
{
    
/**************************************************************
     * 文件名:    Program.cs
     * 作者:      周伟 (2007/10/24)
     * 功能描述:  通过各种方式实现XML数据的各种操作
     * **********************************************************
*/

    
class Program
    
{
        
static void Main(string
[] args)
        
{
            createXml();
        }


        
public static void createXml()
        
{
            
//通过各种方式创建数据信息到XML文件

            Console.WriteLine("-----------------------------------");
            Console.WriteLine(
"1:通过字符串加载到XML对象并创建文件"
);
            Console.WriteLine(
"-----------------------------------"
);
            Console.WriteLine(
"2:通过添加结点信息构造XML对象到文件"
);
            Console.WriteLine(
"-----------------------------------"
);
            Console.WriteLine(
"3:通过从数据库中获取数据构造XML对象"
);
            Console.WriteLine(
"-----------------------------------"
);
            Console.Write(
"请选择XML操作方式(输入exit退出):"
);
            String input 
=
 Console.ReadLine();
            
while (input != "exit"
)
            
{
                
switch
 (input)
                
{
                    
case "1"
:
                        
{   //第一种方式:通过字符串构造XML对象
                            XmlDocument doc1 = new XmlDocument();
                            doc1.LoadXml(
"<song type='Pop'>" +

                                
"<name>光辉岁月</name>" +
                                
"<singer>BEYOND</singer>" +
                                
"</song>");
                            doc1.Save(
@"data1.xml"
);
                            Console.WriteLine(
"字符串生成XML文件成功!"
);
                            
break
;
                        }

                    
case "2":
                        
{   //第二种方式:通过添加结点信息构造XML对象
                            XmlDocument xd = new XmlDocument();
                            XmlElement root 
= xd.CreateElement("MovieList"
);

                            XmlElement node 
= xd.CreateElement("Movie"
);
                            node.SetAttribute(
"type""American"
);

                            XmlElement node1 
= xd.CreateElement("name"
);
                            XmlText xmltext 
= xd.CreateTextNode("Legends of falls"
);
                            node1.AppendChild(xmltext);
                            node.AppendChild(node1);
                            root.AppendChild(node);

                            XmlElement node2 
= xd.CreateElement("Actor"
);
                            XmlText xmltext2 
= xd.CreateTextNode("Brad Pitt"
);
                            node2.AppendChild(xmltext2);
                            node.AppendChild(node2);
                            root.AppendChild(node);

                            xd.AppendChild(root);
                            xd.Save(
@"data2.xml"
);
                            Console.WriteLine(
"通过结点信息创建XML文件成功!"
);
                            
break
;
                        }

                    
case "3":
                        
{
                            
//通过从数据库中读取数据到XML文件

                            try
                            
{
                                XmlDocument xd 
= new
 XmlDocument();
                                XmlElement root 
= xd.CreateElement("AuthorList"
);

                                SqlConnection con 
= new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=;"
);
                                String qry 
= "select * from authors"
;
                                con.Open();
                                SqlCommand cmd 
= new
 SqlCommand(qry, con);
                                SqlDataReader dr 
=
 cmd.ExecuteReader();
                                
while
 (dr.Read())
                                
{
                                    XmlElement node 
= xd.CreateElement("author"
);
                                    
for (int i = 0; i < dr.FieldCount; i++
)
                                    
{
                                        XmlText xt 
=
 xd.CreateTextNode(dr[i].ToString());
                                        XmlElement node1 
=
 xd.CreateElement(dr.GetName(i));
                                        node1.AppendChild(xt);
                                        node.AppendChild(node1);
                                    }

                                    root.AppendChild(node);
                                }

                                xd.AppendChild(root);
                                xd.Save(
@"data3.xml");
                                Console.WriteLine(
"通过读取数据库创建XML文件成功!"
);
                                con.Close();
                            }

                            
catch (Exception ex)
                            
{
                                Console.Write(
"读取数据库错误,{0}"
, ex.ToString());
                            }

                            
break;
                        }

                    
default:
                        
break
;
                }

                Console.WriteLine(
"-----------------------------------");
                Console.Write(
"请选择XML操作方式(输入exit退出):"
);
                input 
=
 Console.ReadLine();
            }

        }

    }

}

 补充一种用序列化生成XML文件的方法:

 

public static void Serialize()
        
{
            
//注意,Movies是一个带6个属性的类,这里没列出代码,用户可自己设计

            Movies[] films = new Movies[] 
            
{
                
new Movies(5,"Citizen Kane","Orson Welles","Y",1941,1,"RKO"
),
                
new Movies(6,"Casablanca","Michael Curtiz","Y",1942,2,"Warner Bros."
)
            }
;

            XmlRootAttribute xRoot 
= new
 XmlRootAttribute();
            xRoot.ElementName 
= "films"
;
            xRoot.Namespace 
= "XML.movies"
;
            xRoot.IsNullable 
= true
;

            XmlSerializer xSerial 
= new XmlSerializer(typeof
(Movies[]), xRoot);

            
//不用@?

            string fileName = @"E:XMLoscarwinners.xml";
            TextWriter writer 
= new
 StreamWriter(fileName);
            xSerial.Serialize(writer, films);
        }

 

 

原创粉丝点击