LINQ to XML 是 .NET 框架中的一个强大工具,用于在 C# 程序中处理 XML 数据。它是 LINQ(Language-Integrated Query)的一部分,允许开发者以直观且类型安全的方式查询和操作 XML 文档。通过 LINQ to XML,XML 数据被加载到内存中,形成一个可查询的对象模型,类似于 DOM(文档对象模型),但更加轻量级和高效。
在 LINQ to XML 中,XML 文档被表示为 `XDocument` 对象,其中包含 `XElement` 和 `XAttribute` 对象。`XElement` 表示 XML 元素,而 `XAttribute` 代表元素的属性。这些类提供了丰富的 API,使得查询、修改和创建 XML 树变得非常便捷。例如,`Descendants` 方法用于获取所有指定名称的后代元素,`Element` 方法则用于获取指定名称的直接子元素。
在实际应用中,如描述中提到的护士站项目,可以通过 LINQ 查询来高效地遍历和处理 XML 文件。以下是一个简单的例子,展示如何使用 LINQ to XML 从 XML 文件中提取特定数据:
```csharp
string xmlFilePath = @"./当前在科病人基本信息.xml";
XDocument doc = XDocument.Load(xmlFilePath);
var query = from p in doc.Descendants("ROW")
where (int)p.Element("就诊序号") > 1
select new
{
序号 = (int)p.Element("就诊序号"),
日期 = (DateTime)p.Element("就诊日期"),
ID = (string)p.Element("病人ID"),
姓名 = (string)p.Element("姓名"),
性别 = (string)p.Element("性别"),
年龄 = (int)p.Element("年龄"),
科室 = (string)p.Element("就诊科室")
};
foreach (var item in query)
{
Console.WriteLine($"序号: {item.序号}, 日期: {item.日期}, ID: {item.ID}, 姓名: {item.姓名}, 性别: {item.性别}, 年龄: {item.年龄}, 科室: {item.科室}");
}
```
在这个例子中,我们首先加载 XML 文件到 `XDocument`,然后通过 LINQ 查询选择 `ROW` 元素,条件是其 "就诊序号" 大于 1。查询结果转换为匿名类型,便于后续处理。我们遍历查询结果并打印出相关信息。
除了查询,LINQ to XML 还支持 XML 的序列化和反序列化,创建 XML 树,以及验证 XML 格式是否符合 XSD(XML Schema Definition)。例如,你可以使用 `XDocument.Save` 方法将 XML 树保存到文件,或者使用 `XDocument.CreateReader` 创建一个 `XmlReader` 来反序列化 XML 数据。
LINQ to XML 提供了一种现代化、高效且类型安全的方式来处理 XML 数据。它与 C# 语言紧密结合,使得查询表达式可以直接嵌入代码中,提高了代码的可读性和维护性。通过熟练掌握 LINQ to XML,开发者可以更轻松地处理 XML 相关任务,无论是数据读取、转换还是生成。