簡體   English   中英

使用LINQ to XML訪問xml元素

[英]Accessing xml elements using LINQ to XML

我有一個這樣的xml文檔,我需要訪問“員工”,“員工”元素,因此我試圖使用linq的XDocument類來獲取employee元素,但它始終返回空值。

樣本XML:

<organization>
   <metadata>
   </metadata>
   <main>
     <otherInfo>
     </otherInfo>
     <employeeInfo>
      <employees>
        <employee>
           <id>1</id>
           <name>ABC</name>
        </employee>
        <employee>
           <id>2</id>
           <name>ASE</name>
        </employee>
        <employee>
           <id>3</id>
           <name>XYZ</name>
        </employee>
      </employees>
     </employeeInfo>
    </main>
</organization>

C#代碼:

XDocument xDoc = XDocument.Parse(xmlString);
var allEmployees = from d in xDoc.Descendants("employeeInfo")
               from ms in d.Elements("employees")                                   
               from m in ms.Elements("employee")
               select m;

這取決於您需要什么信息。 您的選擇返回一個IEnumerable列表。 此代碼將打印出每位員工

string xmlString = @"<organization>
                           <metadata>
                           </metadata>
                           <main>
                             <otherInfo>
                             </otherInfo>
                             <employeeInfo>
                              <employees>
                                <employee>
                                   <id>1</id>
                                   <name>ABC</name>
                                </employee>
                                <employee>
                                   <id>2</id>
                                   <name>ASE</name>
                                </employee>
                                <employee>
                                   <id>3</id>
                                   <name>XYZ</name>
                                </employee>
                              </employees>
                             </employeeInfo>
                            </main>
                        </organization>";

        XDocument xDoc = XDocument.Parse(xmlString);
        var allEmployees = from d in xDoc.Descendants("employeeInfo")
           from ms in d.Elements("employees")                                   
           from m in ms.Elements("employee")
           select m;

        foreach (var emp in allEmployees) {
            Console.WriteLine(emp);
        }
        Console.Read();
XDocument xDoc = XDocument.Parse(xmlString);
var allEmployees = (from r in xDoc.Descendants("employee")
                   select new
                   {
                       Id = r.Element("id").Value,
                       Name = r.Element("name").Value
                   }).ToList();

foreach (var r in allEmployees)
{
    Console.WriteLine(r.Id + " " + r.Name);
}

只需使用Descendants("Employee");

XDocument xDoc = XDocument.Parse(xmlString);
var allEmployees = xDoc.Descendants("employee").ToList();

暫無
暫無

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

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