加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML与数据集相关的操作

发布时间:2020-12-16 09:32:46 所属栏目:百科 来源:网络整理
导读:一、XML 1、含义:(eXtensible Markup Language)可扩展标记语言 a、标记语言:计算机所能理解的信息符号 b、可扩展:计算机有通用的标记语言如HTML,标准通用的标记语言标签是规定好的,但是XML可以有相关人士自己根据需要自由定义其标签,即其可扩展性。 2

一、XML

1、含义:(eXtensible Markup Language)可扩展标记语言

a、标记语言:计算机所能理解的信息符号

b、可扩展:计算机有通用的标记语言如HTML,标准通用的标记语言标签是规定好的,但是XML可以有相关人士自己根据需要自由定义其标签,即其可扩展性。

2、用途:传送及携带数据信息,不用来表现或展示数据。用途的焦点是 它说明数据时什么。具体展示就表现由使用它的应用程序来决定。

而HTML则用来表现数据。

3、例子

<?xml version="1.0"?>
<小纸条>
 <收件人>大元</收件人>
 <發件人>小張</發件人>
 <主題>問候</主題>
 <具體內容>早啊,飯吃了沒? </具體內容>
</小纸条>

XML序言<?xml version="1.0"?>,这一行代码会告诉解析器或浏览器这个文件应该按照XML规则进行解析。

二、XML的相关操作

1、对XML文件的节点属性修改并保存

using System.Xml;

XmlDocument xmlDoc = new XmlDocument(); //定义XML文件对象
xmlDoc.Load(Server.MapPath("data.xml"));
XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点
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 = "亚胜";//则修改
}
}
}
}
xmlDoc.Save(Server.MapPath("data.xml"));//保存。

2、可以通过DataTable,直接将数据集转化并保存为XML文件

protected void DBToXML()
{
DataTable dt;
dt = new DataTable("testli");
dt.Columns.Add("No",typeof(string));
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("Age",typeof(string));
dt.Columns.Add("Home",typeof(string));

DataRow dr = dt.NewRow();
dr["No"] = "2013202087";
dr["Name"] = "Li";
dr["Age"] = "25";
dr["Home"] = "Shanxi";
dt.Rows.Add(dr);
dt.WriteXml("HiprojectWeb/testli.XML");
}

但是这样转化过来的

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<testli>
<No>2013202087</No>
<Name>Li</Name>
<Age>25</Age>
<Home>Shanxi</Home>
</testli>
</DocumentElement>

根节点只能是<DocumentElement>,没有办法自定义

3、为了实现上述问题,使用了 StringBuilder(可变的字符串序列) 将标签变量等拼接起来

StringBuilder sbXML = new StringBuilder();

sbXML.Append(" <Project xmlns='http://schemas.microsoft.com/project'> ");
sbXML.Append(" <Tasks> ");

sbXML.Append(" <Task> ");

sbXML.Append(" <ID> ");
sbXML.Append("0");
sbXML.Append(" </ID> ");

sbXML.Append(" <Name> ");
sbXML.Append("项目");
sbXML.Append(" </Name> ");

sbXML.Append(" <OutlineNumber> ");
sbXML.Append("0");
sbXML.Append(" </OutlineNumber> ");

sbXML.Append(" <Start> ");
sbXML.Append(kg);//获得该项目的计划开工日期
sbXML.Append(" </Start> ");

sbXML.Append(" <Finish> ");
sbXML.Append(wg);//获得该项目的计划完工日期
sbXML.Append(" </Finish> ");

sbXML.Append(" <Summary> ");
sbXML.Append("1");
sbXML.Append(" </Summary> ");

sbXML.Append(" <PercentComplete> ");
sbXML.Append("0");
sbXML.Append(" </PercentComplete> ");
sbXML.Append(" </Task> ");

sbXML.Append(" </Tasks> ");
sbXML.Append(" </Project>");

Response.ContentType = "text/xml ";
Response.Write(sbXML.ToString());
Response.End(); //将信息发送到客户端 Response对象用于动态响应客户端请示,控制发送给用户的信息

上述代码实现了将XML拼接好,并显示到客户端,但是并未实现保存为XML文件

4、为了实现将拼接好的StringBuilder保存为XML文件,使用FileStream(文件流)

FileStream对象表示在磁盘或网络路径上指向文件的流,这个类提供了在文件中读写字节的方法。

所以,将3中最后三行代码替换为

try { //1.创建文件流 FileStream fileStream = new FileStream("HiprojectWeb/test.xml",FileMode.Create); //2.创建写入器 StreamWriter streamWriter = new StreamWriter(fileStream); //3.将内容写入文件 streamWriter.WriteLine(sbXML); //4.关闭写入器 streamWriter.Close(); //5.关闭文件流 fileStream.Close(); } catch (Exception e) { }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读