使用 C# LINQ 解析 XML 文档
Posted
技术标签:
【中文标题】使用 C# LINQ 解析 XML 文档【英文标题】:Parse an XML document using C# LINQ 【发布时间】:2021-08-16 05:47:14 【问题描述】:我正在尝试解析这个 XML 文档 -
<?xml version="1.0" encoding="UTF-8"?>
<Data xmlns:data="report">
<Report>
<GroupName Descriptor="Administrator">
<ID type="ID">1</ID>
<ID type="Group">Administrator</ID>
</GroupName>
<Members Name="12345 / john smith ">
<ID type="ID">1</ID>
<ID type="UserID">12345</ID>
<ID type="UserName">jsmith</ID>
</Members>
</Report>
<Report>
<GroupName Descriptor="User">
<ID type="ID">1</ID>
<ID type="Group">User</ID>
</GroupName>
<Members Name="14568/Bob smith">
<ID type="ID">1</ID>
<ID type="UserID">14568</ID>
<ID type="UserName">bsmith</ID>
</Members>
<Members Name="14597/Tommy lee">
<ID type="ID">1</ID>
<ID type="UserID">14597</ID>
<ID type="UserName">tlee</ID>
</Members>
</Report>
</Data>
我想要用户列表,比如 -
jsmith Administrator
bsmith User
tlee User
我尝试了 Xpath 和 Descendants 都没有产生我想要的结果
【问题讨论】:
你的努力在哪里?你的 C# 代码在哪里?此外,您想要的输出与源 XML 不匹配。 【参考方案1】:尝试以下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
class Program
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
XDocument doc = XDocument.Load(FILENAME);
List<Group> groups = doc.Descendants("Report").Select(x => new Group()
groupName = (string)x.Element("GroupName").Attribute("Descriptor"),
userNames = x.Elements("Members").Select(y => (string)y.Attribute("Name")).ToArray()
).ToList();
public class Group
public string groupName get; set;
public string[] userNames get;set;
【讨论】:
以上是关于使用 C# LINQ 解析 XML 文档的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中使用 Linq to XML 在文档中搜索不同的 XML 结构