asp.net C#对xml文档创建 修改 删除 查找

1、创建 XML

导入命名空间:


using System.Xml;

//创建 XML 对象

XmlDocument  xmlDocument = new XmlDocument();

// 声明 XML

 XmlDeclaration xmlDeclare =xmlDocument.CreateXmlDeclaration("1.0","utf-8",null);

//创建根节点

XmlElement elementRoot =xmlDocument.CreateElement("Nodes");

xmlDocument.AppendChild(elementRoot);  

//创建节点 Day

XmlElement elementDay = xmlDocument.CreateElement("Day");

       //给节点Day设置属性,并赋值

elementDay.SetAttribute("date","今天"); 

elementRoot.AppendChild(elementDay);


//创建 Day 的子节点Part

XmlElement elementPart = xmlDocument.CreateElement("Part");

elementPart.InnerText = " aaa";

 elementDay.AppendChild(elementPart);

//保存到 XML 文件件下

xmlDocument.Save("./myXml.xml");


 

xml 生成数据:

<Notes>

     <Day date="今天">

              <part>aaa</part>

     </Day>

</Notes>

 

2.读写XML文件

<?xml version="1.0" encoding="utf-8" ?> 
<PhoneBook>
 <phone id="001">
  <Name>加菲尔德</Name> 
  <Number>5555555</Number>
  <City>纽约</City>
  <DateOfBirth>26/10/1978</DateOfBirth>
 </phone>
 <phone id="002">
  <Name>迈克</Name>
  <Number>6666666</Number>
  <City>纽约</City>
  <DateOfBirth>12/02/1978</DateOfBirth>
 </phone>
</PhoneBook>

*********************************************************************

·使用Document读取及写入XML方法

  private void xmlfun()
  {
   XmlDocument doc = new XmlDocument();
   doc.Load(Server.MapPath("phone.xml"));

   XmlElement node = doc.CreateElement("phone");
   XmlAttribute atr = doc.CreateAttribute("id");
   atr.InnerText = "003";
   node.Attributes.Append(atr);

   XmlNode xnode = (XmlNode)doc.CreateElement("Name");
   xnode.InnerText="testName";
   node.AppendChild(xnode);

   xnode = (XmlNode)doc.CreateElement("Number");
   xnode.InnerText="119";
   node.AppendChild(xnode);
   xnode = (XmlNode)doc.CreateElement("City");
   xnode.InnerText="cs";
   node.AppendChild(xnode);
   xnode = (XmlNode)doc.CreateElement("DateOfBirth");
   xnode.InnerText="12/02/1978";
   node.AppendChild(xnode);
   doc.DocumentElement.InsertAfter(node,doc.DocumentElement.LastChild);

   doc.Save(Server.MapPath("phone1.xml"));   //必须要存为不同的文件

  }

 



 

·使用XmlTextWriter写入XML方法

  private void xmlwriter()
  {
   XmlTextWriter writer= new XmlTextWriter(Server.MapPath("phone4.xml"),null);
   writer.Formatting = Formatting.Indented;  //缩进格式
   writer.Indentation =4;

   writer.WriteStartDocument();

   writer.WriteStartElement("Person");

   writer.WriteStartAttribute("ID",null);
   writer.WriteString("004");
   writer.WriteEndAttribute();

   writer.WriteStartElement("Name");
   writer.WriteString("testWriterName");
   writer.WriteEndElement();

   writer.WriteStartElement("Number");
   writer.WriteString("88888");
   writer.WriteEndElement();

   writer.WriteStartElement("City");
   writer.WriteString("testWriterCity");
   writer.WriteEndElement();

   writer.Flush();
   writer.Close();

  }

 


 

·使用XmlTextReader读取XML方法

  private void xmlread()
  {
      XmlTextReader reader = new XmlTextReader(Server.MapPath("phone.xml"));
      while(reader.Read())
      {
          if(reader.LocalName.Equals("Name") || reader.LocalName.Equals("Number"))
      {
      this.Label1.Text += reader.ReadString()+"t";
  }


 


 

·作用SqlCommand.ExecuteXmlReader()取得XML

SqlConnecting conn = new SqlConnection(CONNSTR);
SqlCommand cmd = new SqlCommand("select fname from employee for xml auto",conn);
conn.open();
XmlReader reader = cmd.ExecuteXmlReader();
......
################ 所取xml数据格式 #################

<employee fname="aria"/>
<employee fname="carlors"/>......


3.查找xml

<Placemark>
      <description>Front line</description>
      <Name>sole</Name>
      <styleUrl>#roadStyle</styleUrl>
      <LineString>
        <coordinates>
               114.0456,22.324
            </coordinates>
      </LineString>
    </Placemark>
如何根据Name的值找到这个Placemark
让后插入数据到
coordinates节点中呢。

 

XmlElement Chid_Elent = Doc.DocumentElement; //得到XML的根节点
 if (Chid_Elent.ChildNodes.Count > 0)//如果根节点下有子节点
  {
       foreach (XmlElement Elent in Chid_Elent.ChildNodes)//循环获取节点值
       {
             value=Elent.InnerText;//得到值
             Elent.InnerText=vaue; //或者赋值  value为外部变量
       }
}


 

最后save(路径)


4、显示所有数据

 

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通用工具类

using System;
using System.Xml;

namespace WLerp.Common.Util
{
    /// <summary>
    /// Xml 操作工具类
    /// </summary>
    public sealed class XmlUtil
    {
        private XmlUtil() { }

        /// <summary>
        /// 创建节点
        /// </summary>
        /// <param name="node"></param>
        /// <param name="newElementName"></param>
        /// <returns></returns>
        public static XmlNode AppendElement(XmlNode node, string newElementName)
        {
            return AppendElement(node, newElementName, null);
        }

        /// <summary>
        /// 创建节点
        /// </summary>
        /// <param name="node"></param>
        /// <param name="newElementName"></param>
        /// <param name="innerValue"></param>
        /// <returns></returns>
        public static XmlNode AppendElement(XmlNode node, string newElementName, string innerValue)
        {
            XmlNode oNode;
            if (node is XmlDocument)
            {
                oNode = node.AppendChild(((XmlDocument)node).CreateElement(newElementName));
            }
            else
            {
                oNode = node.AppendChild(node.OwnerDocument.CreateElement(newElementName));
            }

            if (innerValue != null)
            {
                oNode.AppendChild(node.OwnerDocument.CreateTextNode(innerValue));
            }
            return oNode;
        }

        /// <summary>
        /// 创建属性
        /// </summary>
        /// <param name="xmlDocument"></param>
        /// <param name="name"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static XmlAttribute CreateAttribute(XmlDocument xmlDocument, string name, string value)
        {
            XmlAttribute oAtt = xmlDocument.CreateAttribute(name);
            oAtt.Value = value;
            return oAtt;
        }

        /// <summary>
        /// 设置属性的值
        /// </summary>
        /// <param name="node"></param>
        /// <param name="attributeName"></param>
        /// <param name="attributeValue"></param>
        public static void SetAttribute(XmlNode node, string attributeName, string attributeValue)
        {
            if (node.Attributes[attributeName] != null)
            {
                node.Attributes[attributeName].Value = attributeValue;
            }
            else
            {
                node.Attributes.Append(CreateAttribute(node.OwnerDocument, attributeName, attributeValue));
            }
        }

        /// <summary>
        /// 获取属性的值
        /// </summary>
        /// <param name="node"></param>
        /// <param name="attributeName"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static string GetAttribute(XmlNode node, string attributeName, string defaultValue)
        {
            XmlAttribute att = node.Attributes[attributeName];
            if (att != null)
            {
                return att.Value;
            }
            else
            {
                return defaultValue;
            }
        }

        /// <summary>
        /// 获取节点的值
        /// </summary>
        /// <param name="parentNode"></param>
        /// <param name="nodeXPath"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static string GetNodeValue(XmlNode parentNode, string nodeXPath, string defaultValue)
        {
            XmlNode node = parentNode.SelectSingleNode(nodeXPath);
            if (node.FirstChild != null)
            {
                return node.FirstChild.Value;
            }
            else if (node != null)
            {
                return node.Value;
            }
            else
            {
                return defaultValue;
            }
        }
    }
}


 读取XML节点属性值及节点值

 protected void ReadNode_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("Student1.xml"));   
        
            XmlNodeList list = doc.GetElementsByTagName("StuName"); //Student1.xml文件里面的StuName节点
            foreach (XmlElement host in list)
            {
                Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + host.Attributes["name"].Value + "<br/>");
                Response.Write("Student1.xml节点里面的StuName节点的id属性的值为:" + host.Attributes["id"].Value + "<br/>");             
            }


            String d1 = doc.SelectSingleNode("//StuName[@id='1']/@name").Value;//读取stuname标签里面的id为1的name的值
            Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + d1 + "<br/>");

 
        }


 protected void readxml()
        {

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("Student1.xml")); //加载xml
            XmlNodeList NodeList = xmlDoc.SelectNodes("/Students/Student"); //xml节点的路径
            //循环遍历节点
            for (int i = 0; i < NodeList.Count; i++)
            {
                string xmlStuName = NodeList[i].ChildNodes[0].InnerText;    //获取第一个Student节点的StuName
                string xmlStuSex = NodeList[i].ChildNodes[1].InnerText;     //获取第一个Student节点的StuSex
                string xmlStuAge = NodeList[i].ChildNodes[2].InnerText;     //获取第一个Student节点的StuAge
                string xmlStuAddress = NodeList[i].ChildNodes[3].InnerText; //获取第一个Student节点的StuAddress
                //循环读取xml节点信息
                Response.Write("当前的xml文件中的节点StuName是:" + xmlStuName + "<br />" + "当前的xml文件中的节点StuSex是:" + xmlStuSex + "<br />" + "当前的xml文件中的节点StuAge是:" + xmlStuAge + "<br />" + "当前的xml文件中的节点StuAddress是:" + xmlStuAddress);
            }
        }

Student1.xml文件内容:

<?xml version="1.0" encoding="utf-8"?>
<Students>
  <Student>
    <StuName id='1' name='lizong'>lili</StuName>
    <StuSex>nan</StuSex>
    <StuAge>24</StuAge>
    <StuAddress>shenzhen</StuAddress>
  </Student>
</Students>


 



 

把XML文件内容,通过Gridview显示

 

 

 private void LoadGridView()
        {

            DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath("xmltodataset.xml"));

            this.GridView2.DataSource = ds;
            this.GridView2.DataBind();
        }



  xmltodataset.xml文件内容:

<?xml version="1.0" encoding="utf-8"?>
<students>
  <student>
    <id>4</id>
    <name id='1' name='zhangsan'>text4</name>
    <age>21</age>
  </student>
  <student>
    <id>5</id>
    <name id='1' name='zhangsan'>text5</name>
    <age>22</age>
    <sex>nan</sex>
  </student>
  <student>
    <id>1</id>
    <name id='1' name='zhangsan'>text1</name>
    <age>18</age>
  </student>
  <student>
    <id>2</id>
    <name id='1' name='zhangsan'>text2</name>
    <age>19</age>
  </student>
  <student>
    <id>3</id>
    <name id='1' name='zhangsan'>text3</name>
    <age>20</age>
  </student>
</students>


 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值