LINQ를 사용하여 XML 파일을 읽는 데 문제가 있습니다. 여기 LINQ로 XML 노드 읽기
은 내가 사용하고 코드는XElement doc = XElement.Load("xmldoc.xml");
var query = from x in doc.Elements("Employee") where x.Element("Name").Attribute("Type").Value == "First" select x;
foreach (XElement item in query)
{
Console.WriteLine(item.Element("Name").Value);
}
이 코드는 모든 첫번째 이름 저를 반환하지만 내가 처음부터 속성 값을 변경할 때 빈 오는 마지막
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<Employee>
<Name Type="First">Jack</Name>
<Name Type="Last">Black</Name>
</Employee>
<Employee>
<Name Type="First">John</Name>
<Name Type="Last">Blue</Name>
</Employee>
<Employee>
<Name Type="First">Dan</Name>
<Name Type="Last">Red</Name>
</Employee>
<Employee>
<Name Type="First">Patrick</Name>
<Name Type="Last">Green</Name>
</Employee>
</Employees>
다음 내 XML 파일입니다 .
내가 이름 노드를 전환하면 성을 다시 찾습니다. 내게는 각 employe 쿼리가 이름 노드에서 값을 반환하고 두 번째 노드에서는 값을 무시하는 것처럼 보입니다. 이 문제를 해결하도록 도와 주시겠습니까?
당신이 정말'Employee' 쿼리 결과의 요소, 아니면 그냥 이름을 원하십니까? 이름 만 원한다면 직원이 아닌 이름을 선택해야합니다. 그렇지 않으면 원하지 않는 태그를 걸러 내기 위해 결과 (예 : XPath)를 변환해야합니다. 또는 단순히'where'를 생략하고'foreach'에서 원하는 태그를 붙잡 으면됩니다 : Console.WriteLine (item.Elements ("Name").) Single (i => i.Attribute ("Type") .Value == "Last"). Value); ' – mellamokb