C#-XML-数据传输
关于xml是属于⼀个⽐较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写⼊操作。xml可作为⼩型数据库⽤来存储数据。
html主要⽤来显⽰数据,XAML前台设计。
⼀.什么是XML?
XML 指可扩展标记语⾔(EXtensible Markup Language)--可扩展意味着标签可以⾃定义,不像html固定标签。
XML 是⼀种标记语⾔,很类似HTML
XML 的设计宗旨是传输数据,⽽⾮显⽰数据
XML 标签没有被预定义,您需要⾃⾏定义标签
XML 被设计为具有⾃我描述性
XML 是W3C 的推荐标准
⼆.XML语法:
1.⼀个XML包含以下⼏部分内容:
⽂档声明,元素,属性,注释,CDATA(特殊字符),处理指令,node节点
节点包含元素(⽂本中见到的所有东西都是节点,元素指的是标签)。
只能有⼀个根节点
2.最简单的声明格式
<?xml version="1.0" ?>
⽤encoding属性声明⽂档的编码
<?xml version="1.0" encoding="UTF-8" ?>
⽤standalone属性说明⽂档是否独⽴
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
三、写⼊XML内容:
dom-document object model(XmlDocument⽂档对象),注意必须先有⼀个根节点。
//通过代码来创建XML⽂档
//1、引⽤命名空间
//2、创建XML⽂档对象
XmlDocument doc = new XmlDocument();
//3.创建第⼀⾏描述信息,添加到doc⽂档中
XmlDeclaration dec= doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//4.创建根节点
XmlElement siemens = doc.CreateElement("Siemens");
doc.AppendChild(siemens);
//5.给根节点books创建⼦节点
XmlElement opcua = doc.CreateElement("OPCUA");
siemens.AppendChild(opcua);
//6.给book1添加⼦节点
XmlElement plc1 = doc.CreateElement("PLC1");
plc1.InnerText = "_84303";
opcua.AppendChild(plc1);
XmlElement plc2 = doc.CreateElement("PLC2");
plc2.InnerText = "_87303";
opcua.AppendChild(plc2);
XmlElement plc3 = doc.CreateElement("PLC3");
plc3.InnerText = "_89303";
opcua.AppendChild(plc3);
XmlElement plc4 = doc.CreateElement("PLC4");
plc4.InnerXml = "<a>我就发⽽⾮</a>";
opcua.AppendChild(plc4);
XmlElement plc4_1 = doc.CreateElement("年级");
plc4_1.SetAttribute("名字","⼩明");
plc4_1.InnerXml = "学前班";
plc4.AppendChild(plc4_1);
doc.Save("l");
XmlDocument doc2 = new XmlDocument();
XmlDeclaration des2 = doc2.CreateXmlDeclaration("1.0","utf-8",null);            doc2.AppendChild(des2);
XmlElement person = doc2.CreateElement("Person");
doc2.AppendChild(person);
for(int i=0;i<lstudent.Count;i++)
{
XmlElement student = doc2.CreateElement("Studemt");
student.SetAttribute("ID",lstudent[i].id.ToString());
writeline方法属于类
XmlElement name = doc2.CreateElement("Name");
name.InnerXml = lstudent[i].name;
XmlElement age = doc2.CreateElement("Age");
age.InnerXml = lstudent[i].age.ToString();
XmlElement gender = doc2.CreateElement("Gender");
gender.InnerXml = lstudent[i].gender.ToString();
person.AppendChild(student);
student.AppendChild(name);
student.AppendChild(age);
student.AppendChild(gender);
}
doc2.Save("l");
四.XML⽂件的读取:
xml⽂件内容:
<?xml version="1.0" encoding="utf-8"?>
<library id="30">
<BOOK id="20">
<name>⾼等数学</name>
<name1>⼤学英语</name1>
</BOOK>
</library>
读取XML内容:
static void Main(string[] args)
{
//将XML⽂件加载进来
XDocument document = XDocument.Load("D:\\l");
//获取到XML的根元素进⾏操作
XElement root= document.Root;
XElement ele= root.Element("BOOK");
//获取name标签的值
XElement shuxing= ele.Element("name");
Console.WriteLine(shuxing.Value);
//获取根元素下的所有⼦元素
IEnumerable<XElement> enumerable = root.Elements();
foreach (XElement item in enumerable)
{
foreach (XElement item1 in item.Elements())
{
Console.WriteLine(item1.Name);  //输出 name  name1
}
Console.WriteLine(item.Attribute("id").Value);  //输出20
}
Console.ReadKey();
}
五、增删改查
#region增删改查
XmlDocument doc3 = new XmlDocument();
if(File.Exists("l"))
{
//存在
//加载⽂件
doc3.Load("l");
//追加,先要拿到根节点
XmlElement Person = doc3.DocumentElement;
#region增加
////追加⼦节点
/
/XmlElement student = doc3.CreateElement("Student");
//student.SetAttribute("ID","5");
//Person.AppendChild(student);
//XmlElement ignore = doc3.CreateElement(".....");
//student.AppendChild(ignore);
#endregion
#region改查
//改查1--获取⼦节点的⽅法
//XmlNodeList ndoes = Person.ChildNodes;
//foreach(XmlNode xnode in ndoes)
//{
/
///不包含属性
//    Console.WriteLine(xnode.InnerText);
////属性信息
//    Console.WriteLine(xnode.Attributes["ID"].Value);
//    if(xnode.Attributes["ID"].Value=="3")
//    {
//        xnode.Attributes["ID"].Value = "改";
//    }
//}
//改查2---xmlpath的⽅法
XmlNode node = Person.SelectSingleNode("/Person/Student");
Console.WriteLine(node.InnerText);
//直接某⼀个⼦节点
XmlNode node1 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");                node1.InnerText = "不男不⼥";
Console.WriteLine(node1.InnerText);
Console.ReadKey();
#endregion改查
#region删除
//根节点不能删除
// doc3.RemoveAll();
//移除的节点必须是操作节点的⼦集
XmlNode node2 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");
//Person.RemoveChild(node2);
XmlNode nodep = Person.SelectSingleNode("/Person/Student[@ID='2']/");
nodep.RemoveChild(node2);
//移除属性
nodep.Attributes.RemoveNamedItem("ID");
#endregion
}
else
{
//不存在
XmlDeclaration des3 = doc3.CreateXmlDeclaration("1.0", "utf-8", null);
doc3.AppendChild(des3);
//添加根节点
XmlElement person3 = doc3.CreateElement("Person");                doc3.AppendChild(person3);
}
doc3.Save("l");
#endregion

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。