📅  最后修改于: 2023-12-03 15:41:47.316000             🧑  作者: Mango
XML是一种常见的数据存储格式,在C#中读取和处理XML文件非常容易。本文将介绍如何从文件、字符串和Web API中读取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数据,可以使用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数据,可以使用.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数据转换为对象或数据集,可以使用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元素的结构,其中XmlRoot
和XmlElement
特性用于指定XML元素的名称。XmlSerializer
类的构造函数用于指定要序列化或反序列化的类型,然后使用Deserialize()
方法将XML字符串转换为对象。
如果要将XML数据转换为数据集,可以使用DataSet
和XmlReader
类。以下是一个示例代码片段:
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数据转换为数据集,最后获取第一个表格。