首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取XML中的特定元素

如何获取XML中的特定元素
EN

Stack Overflow用户
提问于 2017-04-21 16:56:04
回答 4查看 6.5K关注 0票数 0
代码语言:javascript
复制
<Employee Id="01">
<Name> ABC </Name>
<Telephone> 123456789</Telephone>
<Age> 25</Age>
<MartialStatus> False </MartialStatus>
</Employee>

<Employee Id="02">
<Name> XYZ </Name>
<Telephone> 00000000</Telephone>
<Age> 25</Age>
<MartialStatus> False </MartialStatus>
</Employee>

使用电话号码如何在c#中查找特定的员工姓名,假设我有一个XML文件,该文件有100多个员工详细信息,现在使用颗粒员工电话号码查找所有员工详细信息。这怎么可能呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-21 17:12:42

如果你想要一个使用特定电话号码的雇员列表,你可以尝试这样做:

代码语言:javascript
复制
XElement xmlDoc = XElement.Parse(xml);
var employee = xmlDoc.Descendants("Employee").Where(x => x.Element("Telephone")?.Value == "123456789").ToList();

下面是ids列表:

代码语言:javascript
复制
List<string> employeeIDs = res.Select(x => x.Attribute("Id").Value).ToList();
票数 0
EN

Stack Overflow用户

发布于 2017-04-21 17:12:52

创建根标签Employees作为Employee的容器。

代码语言:javascript
复制
<Employees>
  <Employee Id="01">
    <Name> ABC </Name>
    <Telephone>123456789</Telephone>
    <Age> 25</Age>
    <MartialStatus> False </MartialStatus>
  </Employee>
  <Employee Id="02">
    <Name> XYZ </Name>
    <Telephone>00000000</Telephone>
    <Age> 25</Age>
    <MartialStatus> False </MartialStatus>
  </Employee>
</Employees>

代码语言:javascript
复制
        // load file XDocument
        XDocument _doc = XDocument.Load("C:\\t\\My File2.txt");
        /*
         1. Select Employees
            2. Select the Employee Element
               3.Search int this Employee for elements with name "Telephone"
                  4.Extract the value and compare it to your given number
            5. Continue to the next Employee to comaire
         6.Select the first on of all the elements that for filled the search term
         */     

         var employee = _doc.Element("Employees")
            .Elements("Employee")
            .Where(x => x.Element("Telephone")?
            .Value == "00000000")
            .FirstOrDefault();  

         // Get values from elements of Employee
         string name = employee.Element("Name").Value;
         string age = employee.Element("Age").Value;

        MessageBox.Show($"Name: {name}, Age {age}");
票数 0
EN

Stack Overflow用户

发布于 2017-04-21 17:16:11

使用XPath的方法

xml.xml内容

代码语言:javascript
复制
<Employees>
    <Employee Id="01">
        <Name> ABC </Name>
        <Telephone> 123456789</Telephone>
        <Age> 25</Age>
        <MartialStatus> False </MartialStatus>
    </Employee>

    <Employee Id="02">
        <Name> XYZ </Name>
        <Telephone> 00000000</Telephone>
        <Age> 25</Age>
        <MartialStatus> False </MartialStatus>
    </Employee>
</Employees>

通过员工的电话号码访问员工的代码

代码语言:javascript
复制
string telNo = " 123456789";
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\temp\xml.xml");
var employee = doc.SelectSingleNode("Employees/Employee[Telephone='"+ telNo + "']");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43538214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档