首頁 後端開發 XML/RSS教程 .net讀寫xml文件詳解

.net讀寫xml文件詳解

Mar 12, 2017 pm 04:04 PM
.net xml

这篇文章主要介绍了.net读写xml文档的示例,需要的朋友可以参考下

一  .Net框架中与XML有关的命名空间

System.Xml
包含了一些和XML文档的读写操作相关的类,它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter、XmlTextWriter 以及 XmlNode(它的子类包括:XmlDocument、XmlDataDocument、XmlDocumentFragment)等类。

System.Xml.Schema
包含了和XML模式相关的类,这些类包括XmlSchema、XmlSchemaAll、XmlSchemaXPath以及XmlSchemaType等类。

System.Xml.Serialization
包含了和XML文档的序列化和反序列化操作相关的类。
序列化:将XML格式的数据转化为流格式的数据,并能在网络中传输;
反序列化:完成相反的操作,即将流格式的数据还原成XML格式的数据。

System.Xml.Xpath
包含了XPathDocument、XPathExression、XPathNavigator以及XPathNodeIterator等类,这些类能完成XML文档的导航功能。
(在XPathDocument类的协助下,XPathNavigator类能完成快速的XML文档导航功能,该类为程序员提供了许多Move方法以完成导航功能。)

System.Xml.Xsl
完成XSLT的转换功能。

二  写XML文档的方法

用XmlWriter类实现写操作,该类包含了写XML文档所需的方法和属性,它是XmlTextWriter类和XmlNodeWriter类的基类。

写操作的有些方法是成对出现的,比如你要写入一个元素,首先调用WriteStartElement方法—>写入实际内容—>调用WriteEndElement方法结束。

下面通过其子类 XmlTextWriter 来说明如何写XML文档。

XmlTextWriter textWriter = New XmlTextWriter("C:\\myXmFile.xml", null);

在创建完对象后,我们调用WriterStartDocument方法开始写XML文档;
在完成写工作后,就调用WriteEndDocument结束写过程,并调用Close方法将它关闭。

在写的过程中,我们可以:
调用WriteComment方法来添加说明;
通过调用WriteString方法来添加一个字符串
通过调用WriteStartElement和WriteEndElement方法对来添加一个元素;
通过调用WriteStartAttribute和WriteEndAttribute方法对来添加一个属性;
通过调用WriteNode方法来添加整的一个节点;
其它的写的方法还包括WriteProcessingInstruction和WriteDocType等等。

下面的示例介绍如何具体运用这些方法来完成XML文档的写工作。

代码如下:

using System;
using System.Xml; 
namespace WriteXML
{
 class Class1
 {
  static void Main( string[] args )
  {
   try
   {
    // 创建XmlTextWriter类的实例对象
    XmlTextWriter textWriter = new XmlTextWriter("C:\\w3sky.xml", null);
    textWriter.Formatting = Formatting.Indented;
    // 开始写过程,调用WriteStartDocument方法
    textWriter.WriteStartDocument(); 
    // 写入说明
    textWriter.WriteComment("First Comment XmlTextWriter Sample Example");
    textWriter.WriteComment("w3sky.xml in root dir");  
    //创建一个节点
    textWriter.WriteStartElement("Administrator");
    textWriter.WriteElementString("Name", "formble");
    textWriter.WriteElementString("site", "w3sky.com");
    textWriter.WriteEndElement();

    // 写文档结束,调用WriteEndDocument方法
    textWriter.WriteEndDocument();
    // 关闭textWriter
    textWriter.Close();
   }
   catch(System.Exception e)
   {
    Console.WriteLine(e.ToString());
   }
  }
 }
}
登入後複製

三 读XML文档的方法

用XmlTextReader类的对象来读取该XML文档。在创建新对象的构造函数中指明XML文件的位置即可。

XmlTextReader textReader = new XmlTextReader("C:\\books.xml");

XmlTextReader 类中的属性 NodeType 可以知道其节点的节点类型。通过与枚举类型 XmlNodeType 中的元素的比较,可以获取相应节点的节点类型并对其完成相关的操作。

枚举类型 XmlNodeType 中包含了诸如XmlDeclaration、Attribute、CDATA、Element、Comment、Document、DocumentType、Entity、ProcessInstruction以及WhiteSpace等XML项的类型。

下面的示例是以读取"books.xml"文件创建对象,通过该xml对象的Name、BaseURI、Depth、LineNumber等属性来获取相关信息,并显示在控制台中。(运用VS.net开发工具附带的"books.xml"文件来作为示例)

代码如下:

using System;
using System.Xml; 
namespace ReadXml
{
    class Class1
    {
        static void Main( string[] args )
        {
            // 创建一个XmlTextReader类的对象并调用Read方法来读取XML文件
            XmlTextReader textReader  = new XmlTextReader("C:\\books.xml");
            textReader.Read();
            // 节点非空则执行循环体
            while ( textReader.Read() )
            {
                // 读取第一个元素
                textReader.MoveToElement();
                Console.WriteLine("XmlTextReader Properties Test");
                Console.WriteLine("==================="); 
                // 读取该元素的属性并显示在控制台中
                Console.WriteLine("Name:" + textReader.Name);
                Console.WriteLine("Base URI:" + textReader.BaseURI);
                Console.WriteLine("Local Name:" + textReader.LocalName);
                Console.WriteLine("Attribute Count:" + textReader.AttributeCount.ToString());
                Console.WriteLine("Depth:" + textReader.Depth.ToString());
                Console.WriteLine("Line Number:" + textReader.LineNumber.ToString());
                Console.WriteLine("Node Type:" + textReader.NodeType.ToString());
                Console.WriteLine("Attribute Count:" + textReader.Value.ToString());
            }
        }
    }
}
登入後複製

四 运用XmlDocument类

XmlDocument类代表了XML文档,它能完成与整个XML文档相关的各类操作,同时和其相关的XmlDataDocument类也是非常重要的,值得深入研究。 该类包含了Load、LoadXml以及Save等重要的方法。

Load方法: 可以从一个字符串指定的XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。
LoadXml方法: 则完成从一个特定的XML文件导入XML数据的功能。
Save方法: 则将XML数据保存到一个XML文件中或是一个流对象、一个TextWriter对象、一个XmlWriter对象中。

下面的示例中,用到了XmlDocument类对象的LoadXml方法,它从一个XML文档段中读取XML数据并调用其Save方法将数据保存在一个文件中。

代码如下:

// 创建一个XmlDocument类的对象
XmlDocument doc = new XmlDocument();
doc.LoadXml(("<Student type=&#39;regular&#39; Section=&#39;B&#39;><Name>Tommy Lex</Name></Student>"));
// 保存到文件中
doc.Save("C:\\student.xml");

// 还可以通过改变Save方法中参数,将XML数据显示在控制台中,方法如下: 
doc.Save(Console.Out);
下面的示例中,用到了一个XmlTextReader对象,通过它读取"books.xml"文件中的XML数据。然后创建一个XmlDocument对象并载入XmlTextReader对象,这样XML数据就被读到XmlDocument对象中了。最后,通过该对象的Save方法将XML数据显示在控制台中。

XmlDocument doc = new XmlDocument();
// 创建一个XmlTextReader对象,读取XML数据
XmlTextReader reader = new XmlTextReader("c:\\books.xml");
reader.Read();
// 载入XmlTextReader类的对象
doc.Load(reader);
// 将XML数据显示在控制台中
doc.Save(Console.Out);
登入後複製

xml文件

代码如下:

<?xml version=&#39;1.0&#39;?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <first-name>Sidas</first-name>
      <last-name>Plato</last-name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>
登入後複製

另外一个.net操作xml文件示例

代码如下:

//设置配置文件物理路径
    public string xmlPath = "/manage/spider/config.xml";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //设置程序物理路径+文件物理路径
            string path = Request.PhysicalApplicationPath + xmlPath;
            //获取XML元素对象
            XElement config = XElement.Load(path);
            if (config != null)
            {
                //获得节点子元素
                XElement eleAmazonDetailUrl = config.Element("AmazonDetailUrl");
                XElement eleAmazonListUrl = config.Element("AmazonListUrl");
                XElement eleHz = config.Element("Hz");
                XElement eleCount = config.Element("Count");
                //在页面上呈现取到的数据
                if (eleAmazonDetailUrl != null)
                    TextBox_AmazonDetailUrl.Text = eleAmazonDetailUrl.Value;
                if (eleAmazonListUrl != null)
                    TextBox_AmazonListUrl.Text = eleAmazonListUrl.Value;
                if (eleHz != null)
                    TextBox_Hz.Text = eleHz.Value;
                if (eleCount != null)
                    TextBox_Count.Text = eleCount.Value;
            }
            else
                Response.Write("");
        }
    }
    protected void btn_Save_Click(object sender, EventArgs e)
    {
        //设置XML文件路径
        string path = Request.PhysicalApplicationPath + xmlPath;
        //设置节点的名称和内容
        XElement root = new XElement("Settings",
             new XElement("AmazonDetailUrl", TextBox_AmazonDetailUrl.Text.Trim()),
             new XElement("AmazonListUrl", TextBox_AmazonListUrl.Text.Trim()),
             new XElement("Hz", TextBox_Hz.Text.Trim()),
             new XElement("Count", TextBox_Count.Text.Trim())
                 );
        //将元素序列化到指定路径的XML文件当中
        root.Save(path);
     }
登入後複製


以上是.net讀寫xml文件詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

能否用PowerPoint開啟XML文件 能否用PowerPoint開啟XML文件 Feb 19, 2024 pm 09:06 PM

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

Python中的XML資料轉換為CSV格式 Python中的XML資料轉換為CSV格式 Aug 11, 2023 pm 07:41 PM

Python中的XML資料轉換為CSV格式XML(ExtensibleMarkupLanguage)是一種可擴充標記語言,常用於資料的儲存與傳輸。而CSV(CommaSeparatedValues)則是一種以逗號分隔的文字檔案格式,常用於資料的匯入和匯出。在處理資料時,有時需要將XML資料轉換為CSV格式以便於分析和處理。 Python作為一種功能強大

使用Python處理XML中的錯誤和異常 使用Python處理XML中的錯誤和異常 Aug 08, 2023 pm 12:25 PM

使用Python處理XML中的錯誤和異常XML是一種常用的資料格式,用於儲存和表示結構化的資料。當我們使用Python處理XML時,有時可能會遇到一些錯誤和異常。在本篇文章中,我將介紹如何使用Python來處理XML中的錯誤和異常,並提供一些範例程式碼供參考。使用try-except語句捕捉XML解析錯誤當我們使用Python解析XML時,有時候可能會遇到一些

Python解析XML中的特殊字元和轉義序列 Python解析XML中的特殊字元和轉義序列 Aug 08, 2023 pm 12:46 PM

Python解析XML中的特殊字元和轉義序列XML(eXtensibleMarkupLanguage)是一種常用的資料交換格式,用於在不同系統之間傳輸和儲存資料。在處理XML檔案時,經常會遇到包含特殊字元和轉義序列的情況,這可能會導致解析錯誤或誤解資料。因此,在使用Python解析XML檔案時,我們需要了解如何處理這些特殊字元和轉義序列。一、特殊字元和

C#開發中如何處理XML和JSON資料格式 C#開發中如何處理XML和JSON資料格式 Oct 09, 2023 pm 06:15 PM

C#開發中如何處理XML和JSON資料格式,需要具體程式碼範例在現代軟體開發中,XML和JSON是廣泛應用的兩種資料格式。 XML(可擴展標記語言)是一種用於儲存和傳輸資料的標記語言,而JSON(JavaScript物件表示)是一種輕量級的資料交換格式。在C#開發中,我們經常需要處理和操作XML和JSON數據,本文將重點放在如何使用C#處理這兩種數據格式,並附上

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

使用Python實現XML中的資料校驗 使用Python實現XML中的資料校驗 Aug 10, 2023 pm 01:37 PM

使用Python實現XML中的資料校驗引言:在現實生活中,我們經常會處理各種各樣的數據,其中XML(可擴展標記語言)是一種常用的數據格式。 XML具有良好的可讀性和可擴充性,廣泛應用於各種領域,如資料交換、設定檔等。在處理XML資料時,我們經常需要對資料進行校驗,以確保資料的完整性和正確性。本文將介紹如何使用Python實現XML中的資料校驗,並給予對應的

See all articles