簡體   English   中英

使用 C# LINQ 解析 XML 文檔

[英]Parse an XML document using C# LINQ

我正在嘗試解析此 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 和后代都沒有給我我想要的結果

嘗試以下操作:

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;}
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM