📜  读取xml文件c#(1)

📅  最后修改于: 2023-12-03 15:41:47.316000             🧑  作者: Mango

读取XML文件 C#

XML是一种常见的数据存储格式,在C#中读取和处理XML文件非常容易。本文将介绍如何从文件、字符串和Web API中读取XML文件,并将其转换为对象或数据集。

从文件中读取XML文件

使用System.Xml命名空间中的XmlDocument类可以从XML文件中读取XML数据。以下是一个示例代码片段:

using System.Xml;

string filePath = "path/to/xml/file.xml";
XmlDocument doc = new XmlDocument();
doc.Load(filePath);

// 获取根节点
XmlNode rootNode = doc.DocumentElement;

在上面的代码片段中,XmlDocument类的Load()方法用于将XML文件加载到内存中,根据文件路径获取文件,然后获取根节点。其中DocumentElement属性返回的是XML文档的根元素。

从字符串中读取XML文件

要从字符串中读取XML数据,可以使用XmlDocument类的LoadXml()方法:

string xmlString = "<root><name>John</name><age>30</age></root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);

XmlNode rootNode = doc.DocumentElement;

在上面的代码片段中,XmlDocument类的LoadXml()方法用于将XML字符串加载到内存中,然后获取根节点。

从Web API中读取XML文件

要从Web API中读取XML数据,可以使用.NET Framework内置的HttpClient类发送HTTP请求,并将响应作为XML文档处理。以下是一个示例代码片段:

using System.Net.Http;
using System.Xml;

HttpClient client = new HttpClient();

string url = "http://example.com/api/xmldata";
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();

string xmlString = await response.Content.ReadAsStringAsync();

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);

XmlNode rootNode = doc.DocumentElement;

在上面的代码片段中,HttpClient类的GetAsync()方法用于向指定的URL发送GET请求,并将响应保存为XML字符串。然后XmlDocument类的LoadXml()方法用于将XML字符串加载到内存中,最后获取根节点。

将XML转换为对象或数据集

要将XML数据转换为对象或数据集,可以使用XmlSerializer类。以下是一个示例代码片段:

using System.Xml.Serialization;

[XmlRoot("root")]
public class Person
{
    [XmlElement("name")]
    public string Name { get; set; }
    [XmlElement("age")]
    public int Age { get; set; }
}

string xmlString = "<root><name>John</name><age>30</age></root>";
XmlSerializer serializer = new XmlSerializer(typeof(Person));

using (StringReader reader = new StringReader(xmlString))
{
    Person person = (Person)serializer.Deserialize(reader);
}

在上面的代码片段中,Person类用于表示XML元素的结构,其中XmlRootXmlElement特性用于指定XML元素的名称。XmlSerializer类的构造函数用于指定要序列化或反序列化的类型,然后使用Deserialize()方法将XML字符串转换为对象。

如果要将XML数据转换为数据集,可以使用DataSetXmlReader类。以下是一个示例代码片段:

using System.Data;
using System.Xml;

string xmlString = "<root><person><name>John</name><age>30</age></person></root>";
XmlReader reader = XmlReader.Create(new StringReader(xmlString));

DataSet dataSet = new DataSet();
dataSet.ReadXml(reader);

DataTable table = dataSet.Tables[0];

在上面的代码片段中,XmlReader类用于从字符串中读取XML数据,然后DataSet类的ReadXml()方法用于将XML数据转换为数据集,最后获取第一个表格。