zoukankan      html  css  js  c++  java
  • XML文件操作学习(一)

    受人启发,从今天开始也把学到的东西记在博客里加深印象,并且完成这个梳理过程。

    最近大多数的时间都花费在做系统配置上了。大部分的配置比较复杂的都用xml文件来存储。暂时发现有以下几点需要注意的地方。

    今天有点晚了,直接贴代码吧

    <?xml version= "1.0" encoding= "utf-8"?> 
    <Root> 
          <item name="3" id= "3"/> 
          <item name="2" id= "2"/> 
          <item name="5" id= "5"/> 
          <item name="1" id= "1"/> 
    </Root> 
    XmlSortDemo.xml
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    
    namespace XmlCreateElementDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                var doc = new XmlDocument();
                //测试1: 用相对路径load的问题
                //方法1:文件放在bin/Debug目录下
                //doc.Load("XmlSortDemo.xml");
                //方法2:文件放在当前bin/Debug下的上一级目录,即放在bin下
                doc.Load("../XmlSortDemo.xml");//当前目录的父目录
                
                //测试2 :可以同时新建多个标签名相同的元素
                var node1 = doc.CreateElement("node");
                var node2 = doc.CreateElement("node");
    
                //测试3 : InnerXml与OuterXml的区别
                XmlNode root = doc.SelectSingleNode("Root");
                var innerXml = root.InnerXml;          
                var outerXml = root.OuterXml;          
            }
        }
    }

    Tip1:在测试1中,用相对路径加载文件的方法,和我们加载外部程序集时去Load那些dll文件时的道理是一样的,要确保程序执行到这里的时候能够找到指定的文件并且加载。程序在执行时,入口为当前项目的输出路径,一般为项目文件夹下的bin/Debug目录(这个输出路径可以在VS中进行设置),而如果直接写文件名的话,就需要将文件也放在这个输出目录下。

    Tips2:doc.CreateElement("node");这个方法中,参数即为新建元素的标签名。同一个XmlDocument的实例可以新建多个有相同标签名的元素。

    Tips3:InnerXml与OuterXml的区别。

    在上述的代码中,

    innerXml的值为:<item name="3" id="3" /><item name="2" id="2" /><item name="5" id="5" /><item name="1" id="1" />

    OuterXml的值为:<Root><item name="3" id="3" /><item name="2" id="2" /><item name="5" id="5" /><item name="1" id="1" /></Root>

    即OuterXml的值还包含了当前这个标签的标签名。

  • 相关阅读:
    【BZOJ1029】[JSOI2007] 建筑抢修(堆优化贪心)
    【CF799B】T-shirt buying(一道很水的小根堆)
    【BZOJ1076】[SCOI2008] 奖励关(状压DP)
    【BZOJ1087】[SCOI2005] 互不侵犯King(状压DP)
    【BZOJ3209】花神的数论题(数位DP)
    【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)
    【洛谷】CYJian的水题大赛 解题报告
    【洛谷3959】宝藏(随机算法乱搞)
    【洛谷2709】小B的询问(莫队模板题)
    【洛谷2403】[SDOI2010] 所驼门王的宝藏(Tarjan+dfs遍历)
  • 原文地址:https://www.cnblogs.com/hanpanpan/p/3360280.html
Copyright © 2011-2022 走看看