码迷,mamicode.com
首页 > Web开发 > 详细

.NET中的XML一

时间:2016-03-28 21:46:30      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

1.XML的特点

  与html相似,XML是一种显示数据的标记语言,它可以使数据通过网络无障碍地进行传输。同样它也可以显示在用户的浏览器上,在日常的编程中可以发现XML用的也是特别多,比如我们解决方案的配置文件等。XML的主要功能是存储数据,有效的将数据和显示分离,它的重点是有序和合理地存储数据。XML可以自定义标签,还可以是中文,可以按自己的意愿充分表达文件的内容。可以看出XML最大的优势在于对数据的管理,再加上异构系统间的信息互通和更加精确的搜索,这就是我要掌握XML的原因。下面是一段XML代码:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<网络一班>
  <学生 group="man">
    <学号>20135808</学号>
    <姓名>方一</姓名>
    <Age>20</Age>
  </学生>
  <学生 group="woman">
    <学号>20135807</学号>
    <姓名>李一</姓名>
    <Age>21</Age>
  </学生>
</网络一班> 

其中第一行最后一个属性standalone为yes表示该文件未引用其他外部XML文件。我们要注意所有的XML元素必须合理包含,所有的XML文档必须有一个根元素,XML区分大小写。在System.Xml中包含了与XML文档读写操作相关的类,主要是XmlReader、XmlTextReader、XmlValidatingReader、XmlWriter等类。

2.简单操作Xml

  显然C#肯定是用一个类来代表一个Xml,这个类是XmlDocument,它与XmlReader和XmlWriter一样具有读写功能,而且它还可以随机访问DOM树。下面是我写的一个操作Xml的例子:

public void CreateXml()
        {
            //创建一个空Xml文档
            XmlDocument xmlDocument = new XmlDocument();
            //XmlNode就是每一个节点,比如上面例子中的 "网络一班",这里创建的节点是一个Xml的声明
            XmlNode xmlNode = xmlDocument.CreateNode(XmlNodeType.XmlDeclaration, "", "");
            xmlDocument.AppendChild(xmlNode);
            //添加注释
            XmlComment xmlComment = xmlDocument.CreateComment("Xml文件的注释内容");
            xmlDocument.AppendChild(xmlComment);
            //为Xml文档加入元素,并在元素中添加文本
            XmlElement xmlElement = xmlDocument.CreateElement("", "学生", "");
            //增加一个属性
            XmlAttribute attribute = xmlDocument.CreateAttribute("专业");
            attribute.Value = "计算机";
            xmlElement.Attributes.Append(attribute);
            xmlDocument.AppendChild(xmlElement);
            //增加一个子元素
            XmlElement element2 = xmlDocument.CreateElement("姓名");
            XmlText text2 = xmlDocument.CreateTextNode("王五");
            element2.AppendChild(text2);
            xmlElement.AppendChild(element2);

            XmlElement element3 = xmlDocument.CreateElement("性别");
            text2=xmlDocument.CreateTextNode("");
            element3.AppendChild(text2);
            xmlElement.AppendChild(element3);

            xmlDocument.Save(@"C:\Users\fyz\Desktop\MyXml.xml");
        }
<?xml version="1.0"?>
<!--Xml文件的注释内容-->
<学生 专业="计算机">
  <姓名>王五</姓名>
  <性别></性别>
</学生>

这样就用代码创建了一个Xml文档,从中可以总结出使用的类的作用:

XmlDocument:表示Xml文档类

XmlNode:表示Xml文档中的单个节点

XmlText:表示元素或者属性的文本内容

XmlComment:表示Xml的注释内容

XmlElement:构成Xml文档的最小单位,表示单个数据比如<姓名>王五</姓名>

XmlAttribute:属性则是节点里的说明,如专业=“计算机”

XmlDeclaration:Xml文档第一行必须要有声明

3.读写Xml

  当创建出Xml后,前面也提到有许多读写类去操作Xml。首先来看看XmlWriter类,它包含了写Xml的所有方法和属性,下面是写Xml的代码:

  public void WriteXml()
        {
            XmlTextWriter xmlWriter = new XmlTextWriter(@"C:\Users\fyz\Desktop\MyXml2.xml",null);
           //对元素内容进行缩进
            xmlWriter.Formatting = Formatting.Indented;
            //写入<?xml version="1.0"?>
            xmlWriter.WriteStartDocument();
            //设置在名称和文本之间带有空格的处理指令,
            string str = "type=‘type/xsl‘ href=‘book.xsl‘";
            xmlWriter.WriteProcessingInstruction("xml-stylesheet", str);
            //增加指定名称和可选属性的DocType声明
            xmlWriter.WriteDocType("学生", null, null, "<!ENTITY sex ‘男‘>");
            xmlWriter.WriteComment("Xml注释");
            //写入元素
            xmlWriter.WriteStartElement("学生");
            xmlWriter.WriteAttributeString("专业", "计算机");
            xmlWriter.WriteAttributeString("爱好", "编程");
            xmlWriter.WriteElementString("姓名", "王五");
            xmlWriter.WriteStartElement("性别");
            //创建对上面实体的引用,显示时为 男
            xmlWriter.WriteEntityRef("sex");
            xmlWriter.WriteEndElement();
            //写入CData信息
            xmlWriter.WriteElementString("年龄", "21");
            xmlWriter.WriteCData("年龄大了");
            //关闭写入
            xmlWriter.WriteEndElement();
            xmlWriter.WriteEndDocument();
            //将缓存中的所有内容刷新到基础流,并同时刷新基础流,也就是操作将写入到Xml
            xmlWriter.Flush();
            xmlWriter.Close();
        }
<?xml version="1.0"?>
<?xml-stylesheet type=‘type/xsl‘ href=‘book.xsl‘?>
<!DOCTYPE 学生[<!ENTITY sex ‘男‘>]>
<!--Xml注释-->
<学生 专业="计算机" 爱好="编程">
  <姓名>王五</姓名>
  <性别>&sex;</性别>
  <年龄>21</年龄><![CDATA[年龄大了]]>
</学生>

下面是使用XmlNodeReader类和XmlTextReader类来读取Xml文档的代码。

public void ReadXml()
        {
            XmlDocument document = new XmlDocument();
            document.Load(@"C:\Users\fyz\Desktop\MyXml.xml");
            XmlNodeReader nodeReader = new XmlNodeReader(document);
            //每次读取一个节点
            while (nodeReader.Read())
            {
                Console.WriteLine(nodeReader.NodeType+"  "+nodeReader.Value);    
            }
            Console.WriteLine("\r\n");
            //使用XmlTextReader
            XmlTextReader textReader = new XmlTextReader(@"C:\Users\fyz\Desktop\MyXml2.xml");
            while (textReader.Read())
            {
                Console.WriteLine(textReader.NodeType);
                textReader.MoveToElement();
                Console.WriteLine("Name"+textReader.Name);
                Console.WriteLine("Base URI"+textReader.BaseURI);
                Console.WriteLine("Local Name" + textReader.LocalName);
                Console.WriteLine("value" + textReader.Value);
            }
        }

技术分享

.NET中的XML一

标签:

原文地址:http://www.cnblogs.com/fangyz/p/5321592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!