XML文件的读写和修改

日期: 2008-06-18 来源:TechTarget中国

  ///XML文件内容:


<root>
  <METADATA>
    <AUTHOR>111111</AUTHOR>
    <GENERATOR>1111111</GENERATOR>
    <PAGETYPE>111111</PAGETYPE>
    <ABSTRACT>Specifies a data island</ABSTRACT>
  </METADATA>
  <METADATA>
    <AUTHOR>John Smith2</AUTHOR>
    <GENERATOR>Visual Notepad2</GENERATOR>
    <PAGETYPE>Reference2</PAGETYPE>
    <ABSTRACT>Specifies a data island2</ABSTRACT>
  </METADATA>
  <METADATA>
    <AUTHOR>John Smith3</AUTHOR>
    <GENERATOR>Visual Notepad3</GENERATOR>
    <PAGETYPE>Reference3</PAGETYPE>
    <ABSTRACT>Specifies a data island3</ABSTRACT>
  </METADATA>
</root>


  ///从XML文件读XML数据到页面:


        DataSet strxml = new DataSet();
        string path = “xmlDatal.xml”;
        strxml.ReadXml(Server.MapPath(path));
        this.TextBox1.Text = strxml.Tables[0].Rows[0][“AUTHOR”].ToString();
        this.TextBox2.Text = strxml.Tables[0].Rows[0][“GENERATOR”].ToString();
        this.TextBox3.Text = strxml.Tables[0].Rows[0][“PAGETYPE”].ToString();
        this.TextBox4.Text = strxml.Tables[0].Rows[0][“ABSTRACT”].ToString();


   ///修改XML文件中节点内容:


        XmlDocument xmlDoc = new XmlDocument();
        string path = “xmlDatal.xml”;
        xmlDoc.Load(Server.MapPath(path));
        XmlNode str1 = xmlDoc.selectSingleNode(“/root/METADATA/AUTHOR”);
        str1.InnerText = this.TextBox1.Text.Trim();
        XmlNode str2 = xmlDoc.selectSingleNode(“/root/METADATA/GENERATOR”);
        str2.InnerText = this.TextBox2.Text.Trim();
        XmlNode str3 = xmlDoc.selectSingleNode(“/root/METADATA/PAGETYPE”);
        str3.InnerText = this.TextBox3.Text.Trim();
        XmlNode str4 = xmlDoc.selectSingleNode(“/root/METADATA/ABSTRACT”);
        str4.InnerText = this.TextBox4.Text.Trim();
        xmlDoc.Save(Server.MapPath(path));


   ///在XML文件中添加一条XML数据:


  ///方法一:使用DS操作XML文件


        String fileName = “xmlDatal.xml”;
        DataSet myDs = new DataSet();
        try
        {


         FileStream fileIn;
            fileIn = new FileStream(Server.MapPath(fileName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            myDs.ReadXml(fileIn);
            fileIn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        //给当前DS中增加新行


        DataRow newRow = myDs.Tables[0].NewRow();
        newRow[“AUTHOR”] = this.TextBox1.Text.Trim().ToString();
        newRow[“GENERATOR”] = this.TextBox2.Text.Trim().ToString();
        newRow[“PAGETYPE”] = this.TextBox3.Text.Trim().ToString();
        newRow[“ABSTRACT”] = this.TextBox4.Text.Trim().ToString();
        myDs.Tables[0].Rows.Add(newRow);


        //将myDs的改变写入XML
        try
        {
            FileStream fileOut;
            fileOut = new FileStream(Server.MapPath(fileName), FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            myDs.WriteXml(fileOut, XmlWriteMode.WriteSchema);
            fileOut.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }


  ///方法二:使用XmlDocument写入一笔XML记录


        String fileName = “xmlDatal.xml”;
        try
        {
            //先建立一个XML DOM
            XmlDocument doc = new XmlDocument();


            //读入XML文件
            doc.Load(Server.MapPath(fileName));


            //建立一个节点。
            XmlElement METADATA = doc.createElement(“METADATA”);


            //建立一个属性,并将次属性放置在接点 “newUser” 下
            XmlAttribute newID = doc.createAttribute(“id”);
            newID.InnerText = “3”;
            METADATA.SetAttributeNode(newID);


            //建立一个节点,并将此做为“METADATA”的子节点
            XmlElement AUTHOR = doc.createElement(“AUTHOR”);
            AUTHOR.InnerText = this.TextBox1.Text.Trim().ToString();
            METADATA.AppendChild(AUTHOR);


             //建立一个节点,并将此做为“METADATA”的子节点
            XmlElement GENERATOR = doc.createElement(“GENERATOR”);
            GENERATOR.InnerText = this.TextBox2.Text.Trim().ToString();
            METADATA.AppendChild(GENERATOR);


             //建立一个节点,并将此做为“METADATA”的子节点
            XmlElement PAGETYPE = doc.createElement(“PAGETYPE”);
            PAGETYPE.InnerText = this.TextBox3.Text.Trim().ToString();
            METADATA.AppendChild(PAGETYPE);


             //建立一个节点,并将此做为“METADATA”的子节点
            XmlElement ABSTRACT = doc.createElement(“ABSTRACT”);
            ABSTRACT.InnerText = this.TextBox4.Text.Trim().ToString();
            METADATA.AppendChild(ABSTRACT);


            //将节点“newUser”放在根节点下,并保存
            doc.DocumentElement.AppendChild(METADATA);
            doc.Save(Server.MapPath(fileName));    //我的文件是放在同目录文件夹下的
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
        }
  所有代码都通过调试~~

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • Oracle Hyperion 11.1.2.1 迁移特性与问题

    Oracle Hyperion 11.1.2.1包含可以简化移植的新工具,它们在很多情况下能够减少操作步骤。但还是有诸如Essbase Studio的一些问题必须在以后的版本中进行修复。

  • SQL Server 数据访问策略:CLR

    CLR在很大程度上解放了TSQL逻辑运算能力不足的问题,而且CLR拥有丰富的语言支持,C#,VB.NET等;在.Net Framework基础上,拥有复杂的过程逻辑和计算。

  • 在Oracle数据库中使用XML数据获取业务信息

    只需要通过从一个XML表中提取数据,我们就能发送XML格式化的采购订单给下游使用,这与需要更多转换步骤的多个关系型表才能实现形成明显对比。

  • 详解如何将关系型数据发布为XML

    抽取是通过使用XMLType视图实现的,本质上是物化为SQL执行的一个存储查询结果。XMLType视图允许文档为中心的应用程序把底层的关系结构查询为虚拟的XML文档。