`
daniel_kwok
  • 浏览: 62972 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#操作XML的完整例子——XmlDocument篇

    博客分类:
  • XML
阅读更多

这是一个用c#控制台程序下,  用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。

假设有XML文件:books.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
 
<book>
  
<name>哈里波特</name>
  
<price>10</price>
  
<memo>这是一本很好看的书。</memo>
 
</book>
 
<book id="B02">
  
<name>三国演义</name>
  
<price>10</price>
  
<memo>四大名著之一。</memo>
 
</book>
 
<book id="B03">
  
<name>水浒</name>
  
<price>6</price>
  
<memo>四大名著之一。</memo>
 
</book>
 
<book id="B04">
  
<name>红楼</name>
  
<price>5</price>
  
<memo>四大名著之一。</memo>
 
</book>
</books>  

 

下面是为Program.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace TestXml
...{
    
class Program
    
...{
        
static void Main(string[] args)
        
...{
            XmlElement theBook 
= null, theElem = null, root = null;
            XmlDocument xmldoc 
= new XmlDocument();
            
try
            
...{
                xmldoc.Load(
"Books.xml");
                root 
= xmldoc.DocumentElement;

                
//---  新建一本书开始 ----
                theBook = xmldoc.CreateElement("book");
                theElem 
= xmldoc.CreateElement("name");
                theElem.InnerText 
= "新书";
                theBook.AppendChild(theElem);

                theElem 
= xmldoc.CreateElement("price");
                theElem.InnerText 
= "20";
                theBook.AppendChild(theElem);

                theElem 
= xmldoc.CreateElement("memo");
                theElem.InnerText 
= "新书更好看。";
                theBook.AppendChild(theElem);
                root.AppendChild(theBook);
                Console.Out.WriteLine(
"---  新建一本书开始 ----");
                Console.Out.WriteLine(root.OuterXml);
                
//---  新建一本书完成 ----

                
//---  下面对《哈里波特》做一些修改。 ----
                
//---  查询找《哈里波特》----
                theBook = (XmlElement)root.SelectSingleNode("/books/book[name='哈里波特']");
                Console.Out.WriteLine(
"---  查找《哈里波特》 ----");
                Console.Out.WriteLine(theBook.OuterXml);
                
//---  此时修改这本书的价格 -----
                theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,GetElementsByTagName("price")相当于SelectNodes(".//price")。
                Console.Out.WriteLine("---  此时修改这本书的价格 ----");
                Console.Out.WriteLine(theBook.OuterXml);
                
//---  另外还想加一个属性id,值为B01 ----
                theBook.SetAttribute("id""B01");
                Console.Out.WriteLine(
"---  另外还想加一个属性id,值为B01 ----");
                Console.Out.WriteLine(theBook.OuterXml);
                
//---  对《哈里波特》修改完成。 ----

                
//---  再将所有价格低于10的书删除  ----
                theBook = (XmlElement)root.SelectSingleNode("/books/book[@id='B02']");
                Console.Out.WriteLine(
"---  要用id属性删除《三国演义》这本书 ----");
                Console.Out.WriteLine(theBook.OuterXml);
                theBook.ParentNode.RemoveChild(theBook);
                Console.Out.WriteLine(
"---  删除后的XML ----");
                Console.Out.WriteLine(xmldoc.OuterXml);

                
//---  再将所有价格低于10的书删除  ----
                XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");
                Console.Out.WriteLine(
"---  再将所有价格低于10的书删除  ---");
                Console.Out.WriteLine(
"---  符合条件的书有 " + someBooks.Count + "本。  ---");

                
for (int i = 0; i < someBooks.Count; i++)
                
...{
                    someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));
                }

                Console.Out.WriteLine(
"---  删除后的XML ----");
                Console.Out.WriteLine(xmldoc.OuterXml);

                xmldoc.Save(
"books.xml");//保存到books.xml

                Console.In.Read();
            }

            
catch (Exception e)
            
...{
                Console.Out.WriteLine(e.Message);
            }

        }

    }

}

分享到:
评论
1 楼 walkingp 2010-07-09  
奚总,你好啊!

相关推荐

    C# XML入门经典 —— C#编程人员必备的XML技能

    1. XmlDocument类:C#中,我们可以使用XmlDocument类来加载、解析和操作XML文档。例如,我们可以通过`Load()`方法加载XML文件,然后通过`SelectNodes()`或`SelectSingleNode()`方法来查找和修改元素。 2. XPath和...

    C# xml操作大全 【CSDN 3个例子】.

    本篇文章将深入探讨C#中对XML进行操作的常用方法,通过CSDN提供的三个示例来帮助理解。 首先,让我们来看看第一个示例——"C# XML操作代码大全.doc"。这个文档可能包含了C#处理XML的基本操作,如创建XML文档、读取...

    C#操作XML文件完整源码.rar

    在这个例子中,我们首先创建一个XmlDocument实例并加载XML文件,然后通过XPath查询找到要修改的节点,并更新其内容,最后保存修改后的文档。 学习并熟练掌握C#操作XML文件的能力对于任何C#开发者来说都是至关重要的...

    c#读写XML文件方法

    除了`XmlDocument`,C#还提供了`XmlWriter`和`XmlReader`类,它们提供了更高效、流式的方法来读写XML。`XmlWriter`用于创建新的XML或者向现有XML文件追加内容,而`XmlReader`用于逐个读取XML节点,不占用内存。 ```...

    c#数据库操作实例

    XmlDocument doc = new XmlDocument(); doc.Load("path_to_xml_file.xml"); XmlNodeList nodes = doc.SelectNodes("//NodePath"); foreach (XmlNode node in nodes) { Console.WriteLine(node.InnerText); } ``` 或...

    一个对XmlDocument的DocumentElement 以及其属性Attributes进行访问的类库函数

    XmlBuilder是一个针对XmlDocument对象的类库函数,主要目的是为了方便开发者更高效、更便捷地访问和操作XML文档的核心元素——DocumentElement,以及其包含的属性Attributes。在处理XML数据时,XmlDocument是.NET...

    xml 增 删 改 查

    根据提供的文件信息,本文将详细解释XML文档的基本操作——增、删、改、查,并通过示例代码来进一步阐述这些操作的具体实现。 ### XML简介 XML(Extensible Markup Language)是一种用于标记数据的语言,它允许定义...

    这里有一个小程序——电影售票系统

    `XmlDocument`提供了加载、解析和操作XML文档的方法,如`Load`、`SelectNodes`等;而`XDocument`则提供了更简洁的LINQ语法,可以方便地进行查询和修改。下面是一个使用`XDocument`读取XML的例子: ```csharp using ...

    XML实例.rar

    在描述的“SM3中xml实例代码”中,SM3可能是指中国的国密算法标准——SM3散列函数,它通常用于数字签名和消息认证码的生成。XML实例与SM3的结合,可能涉及到将SM3计算的结果以XML格式存储或传输。 XML的基本结构...

    XML解析在符合SCORM规范课件设计中的应用

    DOM(Document Object Model,文档对象模型)是一种处理XML文件的接口,它提供了一种将XML文档表示为树形结构的方法,使得开发人员可以方便地访问、修改和操作文档中的元素。DOM接口支持多种编程语言,如Java、C#等...

    xml解析中文笔记.docx

    为了使程序能够读取并利用XML文件中的数据,需要使用专门的工具——XML解析器。例如,在Java中,.properties文件通常使用`Properties`类进行解析,而XML则需借助特定的解析器。 - **多语言支持**:XML不仅限于Java...

    Javascript 例子程序 VS.NET 2008版

    7. **DOM操作**:Document Object Model (DOM)是HTML和XML文档的结构表示,JavaScript可以用来查找、修改、添加或删除DOM元素,从而改变网页内容和布局。 8. **AJAX异步通信**:通过XMLHttpRequest对象,JavaScript...

    亮剑.NET深入体验与实战精要2

    6.3.1 XmlDocument创建XML文档 253 6.3.2 XmlTextWriter创建XML文档 254 6.3.3 XmlDocument读取XML文档 256 6.3.4 XmlTextReader读取XML文档 257 6.3.5 在HTML中显示XML中的数据 258 6.3.6 JavaScript获取XML内容 ...

    亮剑.NET深入体验与实战精要3

    6.3.1 XmlDocument创建XML文档 253 6.3.2 XmlTextWriter创建XML文档 254 6.3.3 XmlDocument读取XML文档 256 6.3.4 XmlTextReader读取XML文档 257 6.3.5 在HTML中显示XML中的数据 258 6.3.6 JavaScript获取XML内容 ...

    利用自定义格式文件生成窗体布局

    在C#中,我们可以使用`System.Xml`命名空间的类,如`XmlDocument`或`XDocument`来解析这样的XML文件。首先,加载文件内容,然后遍历XML节点,为每个控件创建对应的窗体元素实例。例如,对于每个`Control`节点,我们...

    表格控件Query

    **表格控件Query——DataTables plug-in for jQuery** 在网页开发中,数据展示是一个至关重要的环节,而表格作为数据组织的常见方式,其交互性和可操作性直接影响用户体验。`DataTables` 是一个针对jQuery框架的...

    【卷一/共两卷】AJAX实战pdf高清版90M

    2.5.2 XMLDocument和XMLHttpRequest对象 2 5.3 向服务器发送请求 2.5.4 使用回调函数监视请求 2.5.5 完整的生命周期 2.6 Ajax有何不同 2.7 小结 2.8 资源 第3章 使AjaX秩序井然 3.1 从混沌到秩序 3.1.1 模式:创造...

Global site tag (gtag.js) - Google Analytics