c#读写xml文件

c#读取xml文件(我的程序)

using System.Xml;

string str="";
            XmlDocument xmlDoc = new XmlDocument();
            info = "E:\\TiledDEMLayer.meta";   //E:\\test.xml
            xmlDoc.Load(info);
            XmlElement element=xmlDoc.DocumentElement;
            //string s=element.GetAttribute("version");  //获取属性,并非获取innertext
            XmlNodeList nodeList = element.ChildNodes;
            XmlNode node = null;
            for(int i=0;i<nodeList.Count;i++)
            {
                node = nodeList[i];
                string a=node.InnerText;
                str = a + ",";
            }

// XmlNodeList root = xmlDoc.SelectNodes("TiledDEMLayer");
            //XmlNode child = xmlDoc.SelectSingleNode("/TiledDEMLayer/MaxLevel");     //TiledModelLayer  //TiledDEMLayer     //查找<bookstore>
            //XmlNode root2 = xmlDoc.SelectSingleNode("TiledDEMLayer");     //TiledModelLayer  //TiledDEMLayer     //查找<bookstore>
            //XmlNodeList xnl = root2.ChildNodes;

 

c#读写xml文件
已知有一个XML文件(bookstore.xml)如下:

Code
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
</bookstore>
1、往<bookstore>节点中插入一个<book>节点:

Code
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点
xe1.AppendChild(xesub1);//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml");
结果为:
Code
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
</bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
Code
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
    {
        xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”

        XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
         foreach(XmlNode xn1 in nls)//遍历
         {
              XmlElement xe2=(XmlElement)xn1;//转换类型
              if(xe2.Name=="author")//如果找到
              {
                   xe2.InnerText="亚胜";//则修改
                   break;//找到退出来就可以了
              }
         }
         break;
   }
}

xmlDoc.Save("bookstore.xml");//保存。
最后结果为:
Code
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book genre="update李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>亚胜</author>
    <price>58.3</price>
  </book>
</bookstore>

     
     
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
Code
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");
<?xml version="1.0" encoding="gb2312"?><bookstore> <book ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book> </book></bookstore>
4、显示所有数据。
Code
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;

foreach(XmlNode xnf in xnl)
{
    XmlElement xe=(XmlElement)xnf;
    Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
    Console.WriteLine(xe.GetAttribute("ISBN"));

    XmlNodeList xnf1=xe.ChildNodes;
    foreach(XmlNode xn2 in xnf1)
    {
        Console.WriteLine(xn2.InnerText);//显示子节点点文本
    }
}



C# 三种写入XML文档的方法

原创地址:http://www.cnblogs.com/jfzhu/archive/2012/12/04/2800656.html

我在以前的博客中介绍了如何使用XmlDocument类对XML进行操作,以及如何使用LINQ to XML对XML进行操作。它们分别使用了XmlDocument类和XDocument类。在本文中,我再介绍一个类,XmlTextWriter。我们分别用这三个类将同样的xml内容写入文档,看一看哪种写法最直观、简便。


我们要写入的XML文档内容为

复制代码
<?xml version="1.0" encoding="UTF-8"?> 
<Contacts> 
  <Contact id="01"> 
    <Name>Daisy Abbey</Name> 
    <Gender>female</Gender> 
  </Contact>   
</Contacts>
复制代码

 

(1)使用XmlDocument类:

复制代码
var xmlDoc = new XmlDocument(); 
//Create the xml declaration first 
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));

//Create the root node and append into doc 
var el = xmlDoc.CreateElement("Contacts"); 
xmlDoc.AppendChild(el);

// Contact 
XmlElement elementContact = xmlDoc.CreateElement("Contact"); 
XmlAttribute attrID = xmlDoc.CreateAttribute("id"); 
attrID.Value = "01"; 
elementContact.Attributes.Append(attrID);

el.AppendChild(elementContact);

// Contact Name 
XmlElement elementName = xmlDoc.CreateElement("Name"); 
elementName.InnerText = "Daisy Abbey"; 
elementContact.AppendChild(elementName);

// Contact Gender 
XmlElement elementGender = xmlDoc.CreateElement("Gender"); 
elementGender.InnerText = "female"; 
elementContact.AppendChild(elementGender);

xmlDoc.Save("test1.xml"); 
复制代码

 

(2)使用LINQ to XML 的XDocument类:

复制代码
var doc = new XDocument( 
    new XElement("Contacts", 
        new XElement("Contact", 
            new XAttribute("id", "01"),                
            new XElement("Name", "Daisy Abbey"), 
            new XElement("Gender", "female") 
        ) 
    ) 
);    
doc.Save("test2.xml"); 
复制代码

 

(3) 使用XmlTextWriter类:

复制代码
String filename = String.Concat("test3.xml");
using (StreamWriter sw = new StreamWriter(filename))
{
    // Create Xml Writer.
    XmlTextWriter xmlWriter = new XmlTextWriter(sw);

    // 也可以使用public XmlTextWriter(string filename, Encoding encoding)来构造
    // encoding默认为 UTF-8.
    //XmlTextWriter writer = new XmlTextWriter("test3.xml", null);

    // Set indenting so that its easier to read XML when open in Notepad and such apps. 
    xmlWriter.Formatting = Formatting.Indented;

    // This will output the XML declaration
    xmlWriter.WriteStartDocument();
                
    xmlWriter.WriteStartElement("Contacts");

    xmlWriter.WriteStartElement("Contact");
    xmlWriter.WriteAttributeString("id", "01");

    xmlWriter.WriteElementString("Name", "Daisy Abbey");
    xmlWriter.WriteElementString("Gender", "female");                

    // close contact </contact>
    xmlWriter.WriteEndElement();
    // close contacts </contact>
    xmlWriter.WriteEndElement();

    xmlWriter.WriteEndDocument();

    xmlWriter.Close();
}
复制代码

 

从上面的代码基本上还是可以看出来,使用LINQ to XML是最简便的。


 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值