xml是一种比较方便的数据储存方式,它适用于小数据的存储。最常见的适用地方莫过于各种web.config与app.config了。
 
一、创建一个简单的xml路径
 public static string xmlPath = AppDomain.CurrentDomain.BaseDirectory + "test.xml";
二、创建一个xml文件,并添加一级数据【只有一级数据】
        public void Set()
{
try
{
XmlDocument xmldoc = new XmlDocument();
if (!File.Exists(xmlPath))
{
//不关闭会有错误提示,被另一个线程占用
File.Create(xmlPath).Close(); //创建root节点
XmlElement root = xmldoc.CreateElement("Root");
xmldoc.AppendChild(root);
xmldoc.Save(xmlPath);
} //加载xml文件
xmldoc.Load(xmlPath);
var rootElement = xmldoc.DocumentElement; //创建子节点
var childnode = xmldoc.CreateElement("Phone");
//设置属性
childnode.SetAttribute("Name", "IPhone 6s");
childnode.SetAttribute("BackGround", "银白色 玫瑰色 土豪金");
//设置内容
childnode.InnerText = "6s 已经是淘汰产品了"; //追加到Root节点
rootElement.AppendChild(childnode);
//保存XML
xmldoc.Save(xmlPath); }
catch (Exception e)
{
Console.WriteLine(e);
}

执行结果,执行了3次,每次添加一些属性

<Root>
<Phone Name="IPhone 6s" />
<Phone Name="IPhone 6s">6s 已经是淘汰产品了</Phone>
<Phone Name="IPhone 6s" BackGround="银白色 玫瑰色 土豪金">6s 已经是淘汰产品了</Phone>
</Root>

三、创建有2级数据的xml文件,一级节点的名字最好保持一致,否则查询时有困难。

        public void Set()
{
try
{
XmlDocument xmldoc = new XmlDocument();
if (!File.Exists(xmlPath))
{
//不关闭会有错误提示,被另一个线程占用
File.Create(xmlPath).Close(); //创建root节点
XmlElement root = xmldoc.CreateElement("Root");
xmldoc.AppendChild(root);
xmldoc.Save(xmlPath);
} //加载xml文件
xmldoc.Load(xmlPath);
var rootElement = xmldoc.DocumentElement; //创建一级节点
var childnode = xmldoc.CreateElement("HuaWeiPhone");
childnode.SetAttribute("Name", "华为手机"); //创建二级节点
var hwbg = xmldoc.CreateElement("BackGround");
hwbg.SetAttribute("Description", "颜色");
hwbg.InnerText = "白色 黑色 玫瑰色 金色";
childnode.AppendChild(hwbg); //创建二级节点
var hwprice = xmldoc.CreateElement("Price");
hwprice.SetAttribute("Description", "价格");
hwprice.InnerText = "";
childnode.AppendChild(hwprice);
//追加到Root节点
rootElement.AppendChild(childnode); //创建一级节点
var childnode2 = xmldoc.CreateElement("XiaoMiPhone");
childnode2.SetAttribute("Name", "小米手机");
//创建二级节点
var hwbg2 = xmldoc.CreateElement("BackGround");
hwbg2.SetAttribute("Description", "颜色");
hwbg2.InnerText = "白色 黑色 ";
childnode2.AppendChild(hwbg2); //创建二级节点
var hwprice2 = xmldoc.CreateElement("Price");
hwprice2.SetAttribute("Description", "价格");
hwprice2.InnerText = "";
childnode2.AppendChild(hwprice2); //追加到Root节点
rootElement.AppendChild(childnode2);
//保存XML
xmldoc.Save(xmlPath); }
catch (Exception e)
{
Console.WriteLine(e);
}
}

xml文件为:

<Root>
<HuaWeiPhone Name="华为手机">
<BackGround Description="颜色">白色 黑色 玫瑰色 金色</BackGround>
<Price Description="价格"></Price>
</HuaWeiPhone>
<XiaoMiPhone Name="小米手机">
<BackGround Description="颜色">白色 黑色 </BackGround>
<Price Description="价格"></Price>
</XiaoMiPhone>
</Root>

四、清理全部的xml数据

        public void Delete()
{
try
{
if (!File.Exists(xmlPath)) return;
var xmldoc = new XmlDocument();
xmldoc.Load(xmlPath);
XmlNodeList xn = xmldoc.GetElementsByTagName("Root");
if(xn?.Count<=)return; //加载root节点
var rootElement = xmldoc.DocumentElement;
rootElement.RemoveAll();
xmldoc.AppendChild(rootElement);
xmldoc.Save(xmlPath); }
catch (Exception e)
{
}
}

五、根据节点名字,清理某一条数据

        public void DeleteByName(string name = "HuaWeiPhone")
{
try
{
if (!File.Exists(xmlPath)) return; XElement root = XElement.Load(xmlPath);
var element = root.Element(name);
element.Remove();
root.Save(xmlPath); }
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}

六、获取数据,根据某一个节点查询

                XmlDocument xmldoc = new XmlDocument();
//加载xml文件
xmldoc.Load(xmlPath); //方法一、根据节点名字获取节点信息
XmlNode xmlNode = xmldoc.SelectSingleNode("Root/XiaoMiPhone");//XiaoMiPhone一级节点名字
//该节点的属性
var name = xmlNode.Attributes["Name"].Value;
XmlNodeList childNodes = xmlNode.ChildNodes;
foreach (XmlNode item in childNodes)
{
//节点属性
var bgdescription = item.Attributes["Description"].Value;
//节点内容
var desTxt = item.InnerText;
//节点名字
var nodeName = item.Name;
}

七、遍历数据,xml数据如下

<Root>
<Phone Name="Oppo手机">
<BackGround Description="颜色">白色 黑色 玫瑰色 金色</BackGround>
<Price Description="价格"></Price>
</Phone>
<Phone Name="Vivo手机">
<BackGround Description="颜色">白色 黑色 </BackGround>
<Price Description="价格"></Price>
</Phone>
<Phone Name="小米手机">
<BackGround Description="颜色">白色 黑色 </BackGround>
<Price Description="价格"></Price>
</Phone>
<Phone Name="锤子手机">
<BackGround Description="颜色">银色 黑色 酒红 金色 </BackGround>
<Price Description="价格"></Price>
</Phone>
</Root>

获取xml数据的方法

可以根据根据节点的名字查询数据,要是输入一级节点,就是查询全部的,要是输入二级节点怎么会获取所有二级节点的该节点数据
XmlNodeList xmlNodeList = xmldoc.SelectNodes("Root/Phone/BackGround");
        public void Get()
{
try
{
XmlDocument xmldoc = new XmlDocument();
//加载xml文件
xmldoc.Load(xmlPath); //查询全部数据
XmlNodeList xmlNodeList = xmldoc.SelectNodes("Root/Phone");
if (xmlNodeList == null || xmlNodeList.Count <= ) return; foreach (XmlNode item in xmlNodeList)
{
//节点属性
var bgdescription = item.Attributes["Name"].Value;
foreach (XmlNode citem in item.ChildNodes)
{
var bgDes = citem.Attributes["Description"].Value;
//节点内容
var desTxt = citem.InnerText;
//节点名字
var nodeName = citem.Name;
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}

XML使用与总结的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  4. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. 使用html2canvas生成一张图片

    注意事项: 1.图片生成问题,生成图片测试机正常传到正式机,无法生成!!====>>原因是正式机中,使用的是CDN加载,导致图片跨域,而canvas不支持图片跨域!!!==>> ...

  2. sms-tools的使用

    先前只有python36的版本,在使用sms-tools的时候遇到了这样那样的问题,现统一记录一下: 运行环境说明: 1. 需要c++编译器,为了避免安装vs,选择了vcforpython27 2.  ...

  3. 使用命令行解析php文件

    使用命令行解析php文件,这样可以调用Log4PHP库中的一些demo,因为默认的输出使用命令行作为输出. 建一个bat文件: echo 以下是使用命令行解析php文件 C:\xampp\php\ph ...

  4. python中input和raw_input函数

    python input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入. raw_input() 将所有输入作为字符串看待,返回字符串类型.而 input() 在 ...

  5. 函数-->指定函数--->默认函数--->动态函数--> 动态参数实现字符串格式化-->lambda表达式,简单函数的表示

    #一个函数何以接受多个参数#无参数#show(): ---> 执行:show() #传入一个参数 def show(arg): print(arg) #执行 show(123) #传入两个参数 ...

  6. Java二维码生成与解码

      基于google zxing 的Java二维码生成与解码   一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> &l ...

  7. 业务侧有大量timeout请求超时日志

    故障背景:程序日志发现有程序请求数据库有大量的timeout请求故障时间:xxx~xxx 故障排查:排查应用服务器和数据库服务器网络和其它硬件监控没有断点,数据库监控请求数当时时间段几乎为0 故障分析 ...

  8. 在v-html中,js 正则表达式清除字符串里的style属性

    项目中遇到这样的需求,后端返回的是字符串,在vue用v-html显示,里面有style样式,要去除style 在v-html中使用filters,和平时的不一样,推荐项目的方法,定义一个全局的过滤方法 ...

  9. swift 学习- 14 -- 继承

    // 一个类可以继承另一个 类的方法, 属性和其他特征, 当一个类继承其他类时, 继承类叫子类, 被继承类叫父类 或 (超类), 在 Swift 中, 继承是区分 [类] 和其他类型的 一个基本特征 ...

  10. Confluence 6 下载和安装 MySQL 驱动

    基于许可证的现在,我们没有将 MySQL 的数据库捆绑到 Confluence 中.需要将你的数据库驱动在 Confluence 中可用: 停止 Confluence. 访问 Database JDB ...