2014-04-01 2 views
0

아래 주어진 xml 데이터가 있습니다. empName = "John"인 직원이 Production 부서에 있는지 확인해야합니다. 존재하는 경우 급여를 갱신하고 그렇지 않으면 부서에 직원을 추가하십시오.xml 데이터에 특정 노드가 있는지 확인하십시오.

<Company> 
    <Company Name="ABCDEF" /> 
    <Place="AKR" /> 
    <Production> 
     <employee empName="John" empId="E11" salary="1000" /> 
     <employee empName="Ivan" empId="E12" salary="3000" /> 
     <employee empName="Paul" empId="E13" salary="1200" /> 
    </Production> 
    <Marketing> 
     <employee empName="Keith" empId="EMP11" /> 
     <employee empName="Christina" empId="EMP12" /> 
    </Marketing> 
    </Company> 

이 노드에는 C# linq을 사용하여 특정 노드가 존재하는지 확인해야합니다.

+1

당신의 XML이 unvalid이다; 과 같은 노드를 가질 수 없습니다. –

+0

그래서 답변이 도움이 되었습니까? 이 문제를 해결할 수 있었습니까? 이 SO 항목을 업데이트하십시오. 어쩌면 당신은 1 개의 대답을 'correct'로 확인할 수 있습니다 ... –

답변

1

수정하여 XML 첫째,

<Company> 
    <Company Name="ABCDEF" /> 
    <Production> 
    <employee empName="John" empId="E11" salary="1000" /> 
    <employee empName="Ivan" empId="E12" salary="3000" /> 
    <employee empName="Paul" empId="E13" salary="1200" /> 
    </Production> 
    <Marketing> 
    <employee empName="Keith" empId="EMP11" /> 
    <employee empName="Christina" empId="EMP12" /> 
    </Marketing> 
</Company> 

당신이 시도이

string filePaths = "XMLFile1.xml"; 
    XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.Load(filePaths); 
    XmlNodeList elements = xmlDoc.GetElementsByTagName("employee"); 
    Boolean found = false; 
    foreach (XmlElement element in elements) 
    { 

     if (element.GetAttribute("empName") == "John") 
     { 
      found = true; 
      break; 
     } 
    } 
0

같은 시도 할 수 있습니다이 :

XmlNode node = xmlDoc.SelectSingleNode(NodeName); 
1

귀하의 XML이 유효하지 않습니다; 유효한 뭔가를 변경 한 후, <Place="AKR" />

같은 노드를 가질 수는 없지만, 그럴 수이 LINQ 문을 사용하십시오 :

XDocument root = XDocument.Parse(File.ReadAllText("xml.xml")); 

IEnumerable<XElement> production = root.Root 
    .Descendants("Production") 
    .Where(x => x.Elements("employee") 
     .Where(e => e.Attribute("empName").Value.Equals("John")) 
     .Any() 
    ); 

if (production.Any()) 
{ 
    Console.WriteLine("John found..."); 
} 
else 
{ 
    Console.WriteLine("No John found"); 
} 
관련 문제