簡體   English   中英

XML文件中的子節點

[英]Child Nodes in XML File

我試圖在我的xml文件中獲取子節點並將其打印出來......但是我不能。 它只是打印一個元素而不是全部。 請幫忙。

XDocument doc = XDocument.Load(GlobalClass.GlobalUrl);
XElement xelement = XElement.Load(GlobalClass.GlobalUrl);

var query = from nm in xelement.Elements("EmployeeFinance")
            where (int)nm.Element("EmpPersonal_Id") == empID
            select new AllowancePaid
            {
                Income_ID = (decimal)nm.Element("Allowance-Grade")
                                       .Element("Amount")
            };

var x = query.ToList();

foreach (var ele in x) {
    Debug.WriteLine(ele.Income_ID);
}

我的XML文件

<EmployeeFinance>
  <EmployeeEmploy_Id>4891</EmployeeEmploy_Id> 
  <EmpPersonal_Id>28407</EmpPersonal_Id> 
  <Employee_Number>11715</Employee_Number> 
  <Allowance-Grade>
    <Amount BenListID="32">6000.00</Amount> 
    <Amount BenListID="59">100000.00</Amount> 
  </Allowance-Grade>
</EmployeeFinance>

添加元素

var result = from element in doc.Descendants("EmployeeFinance")
             where int.Parse(element.Element("EmpPersonal_Id").Value) == tt.Employee_Personal_InfoEmp_id
             select element;
foreach (var ele in result)
{                                      
    ele.Element("Allowance-Grade")
       .Add(new XElement("Amount", new XAttribute("BenListID", tt.ID), tt.Amount));
    doc.Save(GlobalClass.GlobalUrl);
}

問題是你選擇一個量節點.Element("Amount")但是有很多節點。 將其更改為.Elements("Amount")並需要更改幾個地方。 我沒有測試,但邏輯應該像下面的東西一樣工作

var query = from nm in xelement.Elements("EmployeeFinance")
            where (int)nm.Element("EmpPersonal_Id") == empID
            select new AllowancePaid
            {
                AllowanceList = nm.Element("Allowance-Grade").Elements("Amount").Select( a=>(decimal)a.Value).ToList()

            };

foreach (var ele in query) {
    foreach (var a in ele.AllowanceList) {
      Debug.WriteLine(a);
     }
}
        XDocument xelement = XDocument.Parse(xml);

        var query = from nm in xelement.Elements("EmployeeFinance")
                    where (int)nm.Element("EmpPersonal_Id") == 28407
                    select new
                    {
                        Amounts = nm.Element("Allowance-Grade")
                                               .Elements("Amount")
                                               .Select(
                                               row =>
                                                   new {
                                                        id = row.Value
                                                   }
                                               ).ToList()
                    };

        var x = query.ToList();

        foreach (var ele in x)
        {
            foreach(var a in ele.Amounts)
                Console.WriteLine(a);
        }

暫無
暫無

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

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