`

C#中处理xml文档

    博客分类:
  • C#
阅读更多

C#下处理xml是通过XML.NET API类来实现的. XML.NET构架是XML DOM接口的Wrapper,在高层提供了对xml编程的实现.
XML.NET的核心类是XmlDocument, XmlReader, and XmlWriter,被包括在System.xml命名空间中.

XmlReader和XmlWriter是用于读写XML数据的抽象基类.XmlTextReader,XmlValidatingReader,XmlNodeReader是XmlReader的具体实现;而XmlTextWriter和XmlNodeWriter则是XmlWriter的具体实现.XmlDocument类通过和XmlNode, XmlElement, and XmlAttribute类一起以树形的结构形式代表了一个具体的Xml文档.

System.Xml.Xsl接口和其具体类提供了对XSLT的实现;XPathDocument类和XPathNavigator类则提供了对Xml遍历等的相关操作.

现在以下面的movie.xml文档为例(被保存在C盘下C:\movie.xml),来说明如何对Xml文档进行操作.

Xml代码

<?<SPAN class=hilite2>xml</SPAN> version="1.0" encoding="utf-8"?>
 <movies>
  <movie>
    <name>Blade Runner</name>
    <category>Sci-Fi</category>
    <releaseRegion>USA</releaseRegion>
    <releaseTime>1982-6-25</releaseTime>
    <director>Ridley Scott</director>
    <price>27.95</price>
    <isrc>US-F18-06-0428-0/V.J9</isrc>
  </movie>
  <movie>
    <name>Brazil</name>
    <category>Fantasy</category>
    <releaseRegion>USA</releaseRegion>
    <releaseTime>1985-12-18</releaseTime>
    <director>Terry Gilliam</director>
    <price>29.98</price>
    <isrc>US-F18-07-8428-0/V.J9</isrc>
  </movie>
</movies>

 读xml文档

public void read<SPAN class=hilite2>Xml</SPAN>Data()
{
    <SPAN class=hilite2>Xml</SPAN>TextReader reader = new <SPAN class=hilite2>Xml</SPAN>TextReader("C:/books.<SPAN class=hilite2>Xml</SPAN>");
    while (reader.Read())
    {
        if (reader.HasValue)
        {
            Console.WriteLine("Name : "+ reader. Name);
            Console.WriteLine("Node Depth: " + reader.Depth.ToString( ));
            Console.WriteLine("Value : " + reader.Value);
        }
    }
}

写xml文档

public void write<SPAN class=hilite2>Xml</SPAN>Data()
{           
    <SPAN class=hilite2>Xml</SPAN>TextWriter writer = new <SPAN class=hilite2>Xml</SPAN>TextWriter("C:\\movie.<SPAN class=hilite2>xml</SPAN>" , null);
    try {
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 4;
            //writer.<SPAN class=hilite2>Xml</SPAN>Space = false;
            writer.WriteStartDocument();
            writer.WriteStartElement("movies");
            writer.WriteStartElement("movie");
            writer.WriteStartElement("name", "");
            writer.WriteString("Blade Runner");
            writer.WriteEndElement();
            writer.WriteStartElement("category", "");
            writer.WriteString("Sci-Fi");
            writer.WriteEndElement();
            writer.WriteStartElement("releaseRegion", "");
            writer.WriteString("USA");
            writer.WriteEndElement();
            writer.WriteStartElement("releaseTime", "");
            writer.WriteString("1982-6-25");
            writer.WriteEndElement();
            writer.WriterStartElement("director","");
            writer.WriteString("Ridley Scott");
            writer.WriterEndElement();
            writer.WriterStartElement("price","");
            writer.WriteString("27.95");
            writer.WriterEndElement();
            writer.WriteStartElement("isrc", "");
            writer.WriteString("US-F18-06-0428-0/V.J9");
            writer.WriteEndElement();

            write.WriteEndElement();
            write.WriteEndDocument();
            write.Flush();
        }catch (Exception e) {
            Console.WriteLine("Exception: {0}", e.ToString());
        }
}

在xml中追加节点内容(movie节点)

public void append<SPAN class=hilite2>Xml</SPAN>Node()
    {           
        try
        {
            <SPAN class=hilite2>Xml</SPAN>Document doc = new <SPAN class=hilite2>Xml</SPAN>Document();
            doc.Load("C:\\movie.<SPAN class=hilite2>xml</SPAN>" );
            <SPAN class=hilite2>Xml</SPAN>Node root = doc.DocumentElement;
            <SPAN class=hilite2>Xml</SPAN>Element movieElement = doc.CreateElement("movie");
            <SPAN class=hilite2>Xml</SPAN>Element name = doc.CreateElement("name");
            name.InnerText = "Brazil";
            movieElement.AppendChild(name);
            <SPAN class=hilite2>Xml</SPAN>Element category = doc.CreateElement("category");
            category.InnerText = "Fantasy";
            movieElement.AppendChild(category);
            <SPAN class=hilite2>Xml</SPAN>Element releaseRegionElement = doc.CreateElement("releaseRegion");
            releaseRegionElement.InnerText = "USA";
            movieElement.AppendChild(releaseRegionElement);
            <SPAN class=hilite2>Xml</SPAN>Element releaseTimeElement = doc.CreateElement("releaseTime");
            releaseTimeElement.InnerText = "1985-12-18" ;
            movieElement.AppendChild(releaseTimeElement);
            <SPAN class=hilite2>Xml</SPAN>Element directorElement = doc.CreateElement("director");
            directorElement.InnerText = "Terry Gilliam";
            movieElement.AppendChild(directorElement);
            <SPAN class=hilite2>Xml</SPAN>Element priceElement = doc.CreateElement("price");
            priceElement.InnerText = "29.98";
            movieElement.AppendChild(priceElement);
            <SPAN class=hilite2>Xml</SPAN>Element isrcElement = doc.CreateElement("isrc");
            isrcElement.InnerText = "US-F18-06-0428-0/V.J9";
            movieElement.AppendChild(isrcElement);
            root.AppendChild(movieElement);
            doc.Save(Constants .movieFile );
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception: {0}", e.ToString());
        }

}

 遍历xml文档

System.Xml.XPath包中的XPathNavigator,XPathNodeIterator,XPathExpression等类实现了通过XPath语法遍历,获取具体节点相关信息的操作.

public void traverse()
    {            
        <SPAN class=hilite2>Xml</SPAN>Document doc = new <SPAN class=hilite2>Xml</SPAN>Document();
        doc.Load("C:\\movie.<SPAN class=hilite2>xml</SPAN>");
        XPathNavigator nav = doc.CreateNavigator();
        XPathNodeIterator iterator = nav.Select("/movies/movie[name[contains(text(),'" + "Blade" + "')]]");
        int count = iterator.Count;
        Console.WriteLine("count: "+ count);
        while(iterator .MoveNext() )
        {
            XPathNavigator movieNav = iterator.Current;
            movieNav.MoveToFirstChild();
            String name = movieNav.Value.ToString();
            Console.WriteLine("name: "+ name);
        }
    }
分享到:
评论

相关推荐

    C#处理XML的方法

    可以使用XmlTextWriter类将XML文档写入到文件中。 四、使用 LINQ to XML LINQ to XML是C#中处理XML文件的另一种方法。它提供了一个更加简洁的方式来处理XML文件。 五、处理XML文件的常见问题 在处理XML文件时,...

    c#中对xml文件加密和解密完整代码

    在C#编程环境中,处理XML文件的加密和解密是一项重要的任务,特别是在处理敏感数据时。XML文件因为其结构清晰、易于解析而被广泛应用,但同时也需要妥善保护以防止未授权访问。以下是对C#中XML文件加密和解密的详细...

    C# XML解析方式

    在C#中处理XML文档时,选择合适的解析方式至关重要。对于小型文档或需要频繁修改的文档,DOM解析器是更好的选择;而对于大型文档或者只需要读取部分内容的情况,使用流式解析如`XMLTextReader`或SAX解析器会更加高效...

    C#中XML文件的树形显示

    在C#编程环境中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有结构化、易于读写的特点,常用于存储和传输...总之,理解和掌握C#中处理XML的各种方式,将有助于你更有效地管理和展示XML数据。

    c#处理xml文件

    C#作为.NET框架中的主要编程语言之一,提供了丰富的类库支持来处理XML文档。本文将详细介绍如何使用C#进行XML文件的创建、读取、插入和更新操作。 #### 二、创建XML文件 在C#中创建XML文件通常涉及到以下几个关键...

    C# WinForm 读写XML文件

    在`导出 ToolStripMenuItem_Click`事件处理函数中,同样使用`ShowDialog()`方法显示文件保存对话框,然后调用`dsXML.WriteXml()`方法将当前`DataSet`(即`dsXML`)的数据写入用户指定的文件中。最后,向用户显示一个...

    C# 读写xml文件_xml_

    总结,C#中处理XML文件主要依赖System.Xml命名空间的类,通过XDocument进行读写操作。读取XML数据后,可将其绑定到datagridview控件显示,同时,datagridview的数据也可反向写入XML文件。了解并熟练掌握这些技巧,能...

    C# 处理xml 文档技术

    在.NET框架中,C#语言提供了丰富的XML处理能力,使得开发者可以轻松地对XML文档进行读取、写入以及各种操作。本篇文章将详细介绍如何利用C#处理XML文档,包括插入、修改、删除节点以及显示所有数据的方法。 首先,...

    C#中利用XML文件保存数据

    C#提供了System.Xml命名空间,其中包含一系列类和方法,如XmlDocument、XmlNode、XmlElement等,用于处理XML文档。 首先,让我们详细了解一下如何创建一个XML文件。在C#中,可以使用XmlWriter类来创建和写入XML数据...

    用C#快速读取XML文件,并遍历

    1. **System.Xml命名空间**:C#中处理XML的主要工具位于System.Xml命名空间下,包括XmlDocument、XmlNode、XmlElement等类,它们提供了读取、写入和操作XML文档的功能。 2. **XmlDocument类**:这个类用于加载XML...

    C#解析XML文件并用WinForm显示

    XML(eXtensible Markup Language)是一种数据存储和交换的标准格式,而C#是Microsoft .NET框架下广泛使用的编程语言,非常适合处理XML文档。 首先,让我们了解XML的基本结构。XML文档由元素、属性、文本节点等组成...

    C#中操作xml文件(插入节点、修改、删除).htm

    C#中操作xml文件(插入节点、修改、删除).htmC#中操作xml文件(插入节点、修改、删除).htmC#中操作xml文件(插入节点、修改、删除).htmC#中操作xml文件(插入节点、修改、删除).htmC#中操作xml文件(插入节点、...

    C# XML文件读取示例

    XPath是一种用于在XML文档中查找信息的语言。结合`XmlNodeNavigator`可以高效地遍历和选取节点。 ```csharp using System.Xml.XPath; XPathDocument xpathDoc = new XPathDocument("employees.xml"); ...

    c#中对XML文件进行读写操作

    1. **XmlDocument**: 用于加载、操作和保存XML文档。它提供了一种基于DOM(Document Object Model)的处理方式,允许你遍历整个XML树并进行修改。 2. **XmlReader/XmlWriter**: 提供了基于SAX(Simple API for XML...

    C# XML文件操作

    本篇将详细介绍C#中处理XML文件的基本方法和关键知识点。 首先,读取XML文件通常使用`System.Xml`命名空间中的`XmlDocument`类。以下是一个简单的例子: ```csharp using System.Xml; // 加载XML文件 XmlDocument...

    C# xml处理和排序

    - **创建XML文档**:C#中的System.Xml命名空间提供了多种创建XML文档的方法,如使用XmlDocument类或XDocument类。例如,可以创建一个简单的XML文档如下: ```csharp XmlDocument doc = new XmlDocument(); doc....

    C#代码写入XML文件

    C#作为一种强大的、面向对象的编程语言,在处理XML文档方面提供了丰富的API和工具,使得开发人员能够高效地读取、修改和创建XML文件。以下是从提供的文件信息中提取并深入解析的关键知识点: ### C#中的XML操作 ##...

    C#中创建XML文件

    总结来说,通过以上知识点的学习,我们可以了解到如何在C#中创建一个基本的XML文档,包括添加XML声明、根元素、子元素以及属性,最终将文档保存到文件中。这对于需要与XML格式数据交互的应用程序开发非常有用。

Global site tag (gtag.js) - Google Analytics