2017-04-21 127 views
0
<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#中找到特定員工姓名,假設我有誰擁有100多個員工詳細信息現在使用的顆粒員工的電話號碼找到所有員工詳細一個XML文件。怎麼可能?如何獲得特定元素在XML

+0

你嘗試過什麼和你在哪裏卡住了? –

+0

我在xml文件中有多個員工的詳細信息,現在我想用他的\她的電話號碼在c#中的任何特定的員工詳細信息 –

+0

我已經更新我的答案應該現在工作 –

回答

0

如果要使用特定的電話號碼列表ofemployes你可以試試這個:

XElement xmlDoc = XElement.Parse(xml); 
var employee = xmlDoc.Descendants("Employee").Where(x => x.Element("Telephone")?.Value == "123456789").ToList(); 

這裏是id的列表:

List<string> employeeIDs = res.Select(x => x.Attribute("Id").Value).ToList(); 
0

爲員工容器創建一個根標籤的員工。

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

 // 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

我希望所有員工的詳細信息,不僅爲您的代碼命名我必須使用「如果」多於4或5次? –

+0

您可以像這樣獲得用戶的元素,但這不是最佳做法。我已經更新了我的問題,所以可以在一個oneliner :) –

+0

@Vishal Prajapati它工作? –

0

方法使用XPath

xml.xml內容

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

代碼通過它來訪問員工的電話號碼

string telNo = " 123456789"; 
XmlDocument doc = new XmlDocument(); 
doc.Load(@"c:\temp\xml.xml"); 
var employee = doc.SelectSingleNode("Employees/Employee[Telephone='"+ telNo + "']"); 
0

使用LINQ到XML:

XElement xelement = XElement.Load(@"..\XMLfile1.xml"); 
      IEnumerable<XElement> employees = xelement.Elements(); 

      var elementYouNeed = employees.Where(x => x.Element("Telephone").Value.Trim() == "00000000"); 
      var nameYouNeed = elementYouNeed.ToList()[0].Element("Name").Value; 
相關問題