繁体   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