.net中xml文件的操作

来源:互联网 发布:网络虚拟手机号验证码 编辑:程序博客网 时间:2024/04/30 00:59

上周做程序的时候用到了一些xml的知识,今天对这一知识点做一小小的总结,若有不足之处还望见谅!

首先呢,xml文件最重要的就是可以让用户自己定义结点,子结点及属性,这使得存取信息资源更加方便,上面说的这些自定义的规范都是通过个.xsd的(Schema)模式文件来做约束的,至于这个文件怎么样编写,这里先暂且不谈,因为本人也没有写过。下面介绍一下在.net中用程序如何读取与建立一个xml文件。

1.读取与建立

XmlDocument是操作xml文件必须实例化的类,读取现磁盘上已有的xml文件:

创建一个XmlDocument类的一个实例:XmlDocument doc=new XmlDocument();

调用load()方法加载一个磁盘上已有的xml文件,参数是xml文件的完整路径:doc.load("YourXmlFilePath");

下面是用程序建立一个xml文件:上面说过操作xml文件必须实例化XmlDocument类,新建也应如此:

创建一个XmlDocument类的一个实例:XmlDocument doc=new XmlDocument();

XmlDocument类有诸多方法创建xml的结点内容及属性,当然在结点中又可以包含子节点,下面是一个创建一个简单xml文件的例子:

 XmlDocument doc = new XmlDocument();
            XmlElement chartarea = doc.CreateElement("ChartArea"); //新建一个xml元素,可以包括子节点,属性
            XmlElement series = doc.CreateElement("Series");
            series.SetAttribute("name", "series1"); //给该节点设置属性
            series.SetAttribute("id","001");
            doc.AppendChild(chartarea); //将该节点另到xml文档的末尾,在这里是第一个节点
            chartarea.AppendChild(series);//将第二个节点插入到第一个节点之下
            XmlElement dataPoints = doc.CreateElement("DataPoints"); //第三层节点
            series.AppendChild(dataPoints);
            XmlElement dataPoint = doc.CreateElement("DataPoint");//第四层节点
            dataPoint.SetAttribute("X", "0");
            XmlElement y = doc.CreateElement("Y");
            y.InnerText = "10";
            dataPoints.AppendChild(dataPoint);
            dataPoint.AppendChild(y); //加载

这段程序所得到xml文档的内容如下:

<ChartArea>
  <Series name="series1" id="001">
    <DataPoints>
      <DataPoint X="0">
        <Y>10</Y>
      </DataPoint>
    </DataPoints>
  </Series>
</ChartArea>

怎么样,简单吧!看到这里,大家应该要问了,这个结果是怎么输出的呢,答案就在下面:

XmlTextWriter writer = new XmlTextWriter(Console.Out); //输出到控制台
            writer.Formatting = Formatting.Indented;//输出格式,跟据子元素进行缩进
            doc.WriteContentTo(writer); //将文档输出到流
            writer.Flush(); //刷新基础流
            doc.Save("c://y.xml") //保存成物理文件

 2.从指定节点插入
             XmlNode xmlTmp = doc.SelectSingleNode("ChartMap/ChartAreas/ChartArea/Serieses");//取单一节点
            for (int i = 0; i < 5; i++)//在这面取到的节点下面添加五个DataPoint元素
            {
                XmlElement point1 = doc.CreateElement("DataPoint");
                XmlAttribute xvalue = doc.CreateAttribute("xValue");
                xvalue.InnerText = j.ToString();
                point1.SetAttributeNode(xvalue);
                XmlElement yValue = doc.CreateElement("YValue");
                yValue.InnerText = "20";
                point1.AppendChild(yValue);
                pointsNode.AppendChild(point1);
            }

取多个节点: XmlNodeList nodes = doc.SelectNodes(string xPath);

3.从另外一个xml对象中取到节点以及内容添加到另一个 xml的指定节点下:

using System.Xml;

public class Sample
{
  public static void Main()
  {
     XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");用字符串加载xml文档

    //读取另外一个xml文件

    XmlDocument doc2 = new XmlDocument();
    doc2.Load("books.xml");

    //取doc中指定结点的内容赋值给一个newBook
    XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
    doc.DocumentElement.AppendChild(newBook);  将newBook添加到doc的根节点下去
    
    doc.Save(Console.Out);

写一个XML文件

            XmlTextWriter xw = new XmlTextWriter("c://new.xml", Encoding.UTF8);
            xw.Formatting = Formatting.Indented;
            xw.WriteStartElement("MyResume");
            xw.WriteAttributeString("name","yuhaiyue");
            xw.WriteEndElement();

  }
}
好了,关于xml文件的操作到现在为止,我也只了解这么多,就说到这吧!有些地方还是需要多看看msdn的

原创粉丝点击