簡體   English   中英

如何使用 XDocument 從和 xml 中選擇元素

[英]How to select an element from and xml using XDocument

我有一個名為 Employee.xml 的 XML 文件,其中包含以下內容。

<xyz:Employee>
    xmlns:xyz="http://xyz/Schema/Common/1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xyz:EmployeeDetail  xsi:type="xyz:EmployeeDetailIRD" name="EmpNAme">
        <xyz:State>Permanent</xyz:State>
        <xyz:Assignments>
            <xyz:Assignment>
                <xyz:JoiningDetail Department="support">
                <xyz:JoiningDate>2019-10-23</xyz:JoiningDate>
                </xyz:JoiningDetail>
            </xyz:Assignment>
        </xyz:Assignments>
    </xyz:EmployeeDetail>
</xyz:Employee>

我正在嘗試獲取所有節點並讀取值。

在 C# 代碼中

 string xmlVal = File.ReadAllText(@"Employee.xml"); 
    XDocument empDocument = XDocument.Parse(xmlVal);
    XElement tempElement =     
    empDocument.XPathSelectElement("xyz:EmployeeDetail");

這是行不通的。 我需要讀取所有節點和屬性值。

試試 xml linq :

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);
             XElement root = doc.Root;
             XNamespace xyzNs = root.GetNamespaceOfPrefix("xyz");
             List<EmployeeDetail> employeeDatails = doc.Descendants(xyzNs + "EmployeeDetail").Select(x => new EmployeeDetail()
             {
                 name = (string)x.Attribute("name"),
                 state = (string)x.Element(xyzNs + "State"),
                 assignments = x.Descendants(xyzNs + "Assignment").Select(y => new Assignment()
                 {
                     department = (string)y.Element(xyzNs + "JoiningDetail").Attribute("Department"),
                     joinDate = (DateTime)y.Descendants(xyzNs + "JoiningDate").FirstOrDefault()
                 }).ToList()
             }).ToList();
         }
    }
    public class EmployeeDetail
    {
        public string name { get; set; }
        public string state { get; set; }
        public List<Assignment> assignments { get; set; }
    }
    public class Assignment
    {
        public string department { get; set; }
        public DateTime joinDate { get;set; }
    }

}

暫無
暫無

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

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