C# XML基本操作

C# XML基本操作介绍XML基础概念:扩展标记语言(ExtensibleMarkupLanguage,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自

大家好,又见面了,我是你们的朋友全栈君。

介绍

XML基础概念:

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。

常用传输格式一般用XML或者JSON。两者主要区别在于XML:扩展性好,资源开销大。JSON:资源开销小。

XML使用(原生接口)

XML创建与节点设置

            var xml = new System.Xml.XmlDocument();
            XmlDeclaration declaration = xml.CreateXmlDeclaration("1.0", "UTF-8", "");//xml文档的声明部分           
            xml.AppendChild(declaration);//添加至XmlDocument对象中
            XmlElement User = xml.CreateElement("User");//创建根节点User
            XmlNode Student = xml.CreateElement("Student");//创建子节点ID
            XmlElement ID = xml.CreateElement("ID");//创建子节点元素
            ID.InnerText = "123";
            User.AppendChild(Student);//子节点
            Student.AppendChild(ID);//子节点元素
            xml.AppendChild(User);//根目录User,有且只有一个
            xml.Save(@"E:\1.xml");

插入元素值

            var xml = new System.Xml.XmlDocument();
            xml.Load(@"E:\1.xml");
            XmlNode nodeparams = xml.SelectSingleNode("User");//找根节点
            XmlElement Name = xml.CreateElement("Name");
            nodeparams.AppendChild(Name); //New Node
            xml.Save(@"E:\1.xml");//修改完成后保存

修改元素值

            var xml = new System.Xml.XmlDocument();
            xml.Load(@"E:\1.xml");
            XmlNode nodeparams = xml.SelectSingleNode("User");//找根节点
            if (nodeparams != null)
            {
                XmlNode nodeparams2 = nodeparams.SelectSingleNode("Student");//子节点
                if(nodeparams2!=null)
                {
                    XmlNodeList nodelist = nodeparams2.ChildNodes;
                    if (nodelist != null)
                    {
                        XmlNode ID = nodelist[0];
                        ID.InnerText = "2221";
                        xml.Save(@"E:\1.xml");//修改完成后保存
                    }
                }
            }
            else
            {
                MessageBox.Show("no element");
            }

删除元素值

var xml = new System.Xml.XmlDocument();
            xml.Load(@"E:\1.xml");
            XmlNode nodeparams = xml.SelectSingleNode("User");//找根节点
            XmlNode Name = nodeparams.SelectSingleNode("Name");
            nodeparams.RemoveChild(Name); //New Node
            xml.Save(@"E:\1.xml");//修改完成后保存

Linq to XML

创建并保存

            XDocument xdoc = new XDocument(
            new XDeclaration("1.0", "utf-8", "yes"),
            new XElement("root",new XElement("Student", new XElement("ID", "123")),new XElement("item1", "2")));
            xdoc.Save(@"E:\1.xml");

创建后结果

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
  <Student>
    <ID>123</ID>
  </Student>
  <item1>2</item1>
</root>

查找并添加结点

XDocument xdoc = XDocument.Load(@"E:\1.xml");
            XElement xElement = xdoc.Element("root");
            xElement.Add(new XElement("Test"));
            xdoc.Save(@"E:\1.xml");

输出结果

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
  <Student>
    <ID>123</ID>
  </Student>
  <item1>2</item1>
  <Test />
</root>

删除结点

            XDocument xdoc = XDocument.Load(@"E:\1.xml");
            XElement xElement = xdoc.Element("root");
            XElement Test =xElement.Element("Test");
            Test.Remove();
            //xElement.Remove();
            xdoc.Save(@"E:\1.xml");

查询元素值

            XDocument xdoc = XDocument.Load(@"E:\1.xml");
            XElement xElement = xdoc.Element("root");
            XElement item1 = xElement.Element("item1");//查找item1结点的值
            string a = item1.Value.ToString();
            MessageBox.Show(a.ToString());

参考博客

XMLNode:https://www.cnblogs.com/net-sky/p/10412082.html

Linq to XMl:https://blog.csdn.net/songyi160/article/details/50824274

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154282.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • decltype函数_decltype有什么用

    decltype函数_decltype有什么用前言如果想要知道一个表达式的数据类型但又不想对表达式进行求值,那么auto似乎就不满足这中要求,c++11加入了decltype操作符,它的功能与auto类似,都是进行类型推导,但是decltype就能对某一表达式的类型进行推导并且不求表达式的值.因为decltype在很多的时候并不同于auto操作符,所以我会将大部分的不同罗列出来,比如:数组,顶层const等.declt…

    2022年9月8日
    0
  • 简单的webService实例

    简单的webService实例本文主要是描述了一个简单的webservice发布服务的过程,与怎么去测试该发布的服务的过程

    2022年7月21日
    17
  • 个人能不能开发ctp期货交易_什么是程序化交易期货

    个人能不能开发ctp期货交易_什么是程序化交易期货接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本:CTP交易接口是由::::::上海期货信息技术有限公司::::::开发的,提供C++的接口,网上也有很多C++的Demo版本,可以直接使用。1:上期所的接口为两个.dll、两个.lib和四个.h文件,初学者可以不要C

    2022年10月8日
    0
  • robots txt防爬虫[通俗易懂]

    robots txt防爬虫[通俗易懂]title:robots.txt防爬虫date:2018-07-1218:20:00tags:防坑指南categories:防坑指南事因:公司内部项目在百度搜索上输入名字会出现在搜索结果中,大佬们肯定不愿意啊,就需要禁止爬虫爬取。在项目根目录加入这个文件就行了。WHAT?::::::robots.txt是一个纯文本文件,是爬虫抓取网站的时候要查看的第一个文件,…

    2022年6月7日
    39
  • mysql判断表分区是否存在_mysql 分区表

    mysql判断表分区是否存在_mysql 分区表CREATETABLE`fs_orders_funds_detail_sp32`(`id`int(11)NOTNULLAUTO_INCREMENT,`confirm_time`datetimeNOTNULLDEFAULT’0000-00-0000:00:00′,`order_id`varchar(50)DEFAULTNULLCOMMENT’平台单号’,`updat…

    2022年5月25日
    183
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友

    8年软件测试工程师感悟——写给还在迷茫中的朋友这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然,我说的是最基础的功能测试的岗位需求已经很少了,而自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试仍存在着非常多的机会。“长江后浪推前浪,前浪死在沙滩上”,曾经一句让人…

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号