C#操作XML

Posted 程序员软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#操作XML相关的知识,希望对你有一定的参考价值。

第一时间关注推送的软件内容 

类名 说明
XmlNode 这个类表示文档的一个节点,它是许多类的基类。如果这个节点表示XML文档的根,就可以从它导航文档任意位置。
XmlDocument 扩展了XmlNode类,但通常是使用XML的第一个对象,因为这个类用于加载磁盘或其他地方的数据,并在这些位置保存数据
XmlElement 表示XML文档的一个元素。它派生于XmlLinkedNode,XmlLinkedNode派生于XmlNode
XmlAttribute 表示一个特性,与XmlDocument类一样,它也派生于XmlNode类
XmlText 表示开始标记于结束标记之间的文本
XmlComment 表示一种特殊的类型的节点,这种节点不是文档的一部分,但位阅读器提供文档各部分信息
XmlNodeList 表示一个节点的集合

如何创建XML文档(三种方法)

第一种

    XmlDocument xmlDoc = new XmlDocument();
    XmlDeclaration Declaration = xmlDoc.CreateXmlDeclaration("1.0", "GBK", null);

    xmlDoc.AppendChild(Declaration);
    XmlNode testNode = xmlDoc.CreateElement("test");

    XmlNode WeChatNode = xmlDoc.CreateElement("WeChat");

    XmlAttribute name = xmlDoc.CreateAttribute("Name");
    name.Value = "chengxuyuanruanjian";

    //xml节点附件属性
    WeChatNode.Attributes.Append(Name);
    testNode.AppendChild(WeChatNode);

    xmlDoc.AppendChild(testNode);
    xmlDoc.Save(@"D:\程序员软件\test.xml");

    结果:

    <?xml version="1.0" encoding="GBK"?>
    <test>
        <WeChat Name="chengxuyuanruanjian" />
    </test>

第二种:

    XmlDocument xmlDoc = new XmlDocument();
    XmlDeclaration Declaration= xmlDoc.CreateXmlDeclaration("1.0", "GBK", null);
    xmlDoc.AppendChild(Declaration);
    XmlElement test= xmlDoc.CreateElement("test");
    xmlDoc.AppendChild(test);
    XmlNode demo= xmlDoc.CreateElement("demo");
    test.AppendChild(demo);
    XmlElement WeChat= doc.CreateElement("WeChat ");
    WeChat.SetAttribute("Name", "chengxuyuanruanjian");
    WeChat.SetAttribute("ID", "zhuaizhuaihenguai");
    WeChat.InnerText = "程序员软件";
    demo.AppendChild(WeChat);

    xmlDoc.Save(@"d:\程序员软件\test1.xml");

    结果:

    <?xml version="1.0" encoding="GBK"?>
    <test>
        <demo>
            <WeChat Name="chengxuyuanruanjian" ID="zhuaizhuaihenguai">程序员软件</WeChat>
        </demo>
    </test>

第三种:

    XmlTextWriter xmlWriter;
    string strFilename = @"d:\程序员软件\test2.xml";

    xmlWriter = new XmlTextWriter(strFilename, "GBK");
    xmlWriter.Formatting = Formatting.Indented;
    xmlWriter.WriteStartDocument();
    xmlWriter.WriteStartElement("test");

    xmlWriter.WriteStartElement("demo");
    xmlWriter.WriteAttributeString("ID", "chengxuyuanruanjian");
    xmlWriter.WriteAttributeString("name", "程序员软件");

    xmlWriter.WriteStartElement("author");
    xmlWriter.WriteString("拽拽很乖");
    xmlWriter.WriteEndElement();


    xmlWriter.WriteEndElement();

    xmlWriter.WriteEndElement();

    xmlWriter.Close();

    结果:

XML添加(两种方法)

第一种:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"d:\程序员软件\test2.xml");

    //查询

    XmlNode test= xmlDoc.SelectSingleNode("test");
    XmlElement demoXML= xmlDoc.CreateElement("demo");
    demoXML.SetAttribute("ID", "MYchengxuyuanruanjian");
    demoXML.SetAttribute("name", "程序员软件1");

    XmlElement titleXML= xmlDoc.CreateElement("title");

    titleXML.InnerText = "C#操作XML添加";
    demoXML.AppendChild(titleXML);
    XmlElement authorXML= xmlDoc.CreateElement("author");
    authorXML.InnerText = "拽拽很乖";
    demoXML.AppendChild(authorXML);

    test.AppendChild(demoXML);

    xmlDoc.Save(@"d:\程序员软件\test2.xml");

第二种:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"d:\程序员软件\test2.xml");
    XmlNode test= xmlDoc.SelectSingleNode("test");
    XmlElement demoXML= xmlDoc.CreateElement("demo");
    demoXML.SetAttribute("ID", "MYchengxuyuanruanjian");
    demoXML.SetAttribute("name", "程序员软件1");
    XmlElement title= xmlDoc.CreateElement("title");
    XmlElement author= xmlDoc.CreateElement("author"); 
    XmlText title = xmlDoc.CreateTextNode("C#操作XML添加");
    XmlText author = xmlDoc.CreateTextNode("拽拽很乖");

    title.AppendChild(title);
    author.AppendChild(author);

    demoXML.AppendChild(title);
    demoXML.AppendChild(author);

    test.AppendChild(demoXML);
    xmlDoc.Save(@"d:\程序员软件\test2.xml");

    结果:

        <demo ID="MYchengxuyuanruanjian" name="程序员软件1">
            <title>C#操作XML添加</title>
            <author>拽拽很乖</author>
        </demo>

    </test>


XML修改节点的值

    XmlDocument xmlDoc = new XmlDocument();

    xmlDoc.Load(@"d:\程序员软件\test2.xml");

    XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;

    foreach (XmlNode xn in testList )
    {
        XmlElement xe = (XmlElement)xn;//转换为XmlElement类型
        if (xe.GetAttribute("ID") == "chengxuyuanruanjian")
        {
            xe.SetAttribute("ID", "chengxu");

            XmlNodeList nls = xe.ChildNodes;

            foreach (XmlNode xn1 in nls)
            {
                XmlElement xe2 = (XmlElement)xn1;//转换类型
                if (xe2.Name == "author")
                {
                    xe2.InnerText = "拽拽";/

                }
            }
        }
    }
    xmlDoc.Save(@"d:\程序员软件\test2.xml");


    结果为:

        <demo ID="MYchengxuyuanruanjian" name="程序员软件1">
            <title>C#操作XML添加</title>
            <author>拽拽很乖</author>
        </demo>

    </test>


删除节点

删除节点的某一个属性或某个子节点。

   XmlDocument xmlDoc = new XmlDocument();

    xmlDoc.Load(@"d:\程序员软件\test2.xml");

    XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;

    foreach (XmlNode xn in testList )
    {
        XmlElement xe = (XmlElement)xn;//转换为XmlElement类型
        if (xe.GetAttribute("ID") == "chengxuyuanruanjian")
        {
         
  xe.RemoveAttribute("ID")

            XmlNodeList nls = xe.ChildNodes;

            foreach (XmlNode xn1 in nls)
            {
                XmlElement xe2 = (XmlElement)xn1;//转换类型
                if (xe2.Name == "author")
                {
                    
xe.RemoveChild(xe2);

                }
            }
        }
    }
    xmlDoc.Save(@"d:\程序员软件\test2.xml");


    结果:

        <demo ID="MYchengxuyuanruanjian" name="程序员软件1">
            <title>C#操作XML添加</title>
            <author>拽拽很乖</author>
        </demo>

    </test>


删除一个节点所有内容

    XmlDocument xmlDoc = new XmlDocument();

    xmlDoc.Load(@"d:\程序员软件\test2.xml");
    XmlElement root=xmlDoc.DocumentElement;
    XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;

    foreach (XmlNode xn in testList )

    {
        XmlElement xe = (XmlElement)xn;
        if (xe.GetAttribute("ID") == "MYchengxuyuanruanjian")
        {
            root.RemoveChild(xe);
        }
    }
    xmlDoc.Save(@"d:\程序员软件\test2.xml");

 

    结果:

        </test>

更多知识关注"程序员软件",喜欢文章就关注、点赞、转发吧!


以上是关于C#操作XML的主要内容,如果未能解决你的问题,请参考以下文章

C#常用操作类库三(XML操作类)

C#操作XML文件

C#操作XML文档总结

在 C# 中操作 Word 2007 文档 XML

C# XML相关操作

C#:XML操作类