<?xml version="1.0" encoding="utf-8" ?>
<MYROOT>
<Group name="G1">
<Skill name="G1Skill1">
<SubSkill>G1skill1sub1</SubSkill>
<SubSkill>G1skill1sub2</SubSkill>
</Skill >
<Skill name="G1Skill2">
<SubSkill>G1skill2sub1</SubSkill>
<SubSkill>G1skill2sub2</SubSkill>
</Skill >
</Group>
<Group name="G2">
<Skill name="G2Skill1">
<SubSkill>G2skill1sub1</SubSkill>
<SubSkill>G2skill1sub2</SubSkill>
</Skill >
<Skill name="G2Skill2">
<SubSkill>G2skill2sub1</SubSkill>
<SubSkill>G2skill2sub2</SubSkill>
</Skill >
</Group>
</MYROOT>
예를 들어,LINQ to XML 쿼리를 사용하여 값을 결정해야합니까?
var xmlDoc = XDocument.Load(Server.MapPath("XMLFile1.xml"));
var skills =
from skill in xmlDoc.Descendants("Group")
where skill.Attribute("name").Value.Equals("G1") // && skill.Element("SubSkill").Value.Equals("Group")
select new
{
Myskill = skill.Element("Skill").Value,
mytext= skill.Attribute("name").Value,
};
그러나 적절한 출력을 얻을하지 않습니다 입력은
나는이 코드를 시도 (XML에 단일 LINQ를 사용) &"G1skill1sub1"
예상 출력 "G1"
= G1Skill1
이다.
XPath는 친구입니다. ['XPathSelectElements'] (http://msdn.microsoft.com/en-us/library/bb342176.aspx) 및 친구들을 참조하십시오. –
@pst : 개인적으로 LINQ to XML 쿼리 표현식을 직접 사용하는 편이 낫습니다. 코드를 결합하면 결국 XPath가 신경질을 느낍니다 ("자손 찾기, 평등 비교"등 및 데이터 "G1", "G1skill1sub1"등). 모든 문자열 만 있다는 사실은 컴파일 타임 지원이 없음을 의미합니다. 실행시에만 표시되는 구문 오류로 끝나는 것이 더 쉽습니다. –
@ 존 스키켓 유닛 테스트 ;-) 나는 실수로 더 많은 기회를 이끌 수있는 방법을 볼 수 있지만 사용하기 전에 null에 대한 속성을 확인하거나 이름을 잘못 잊어 버린 것만으로도 충분히 물 렸습니다. 그것은 좀 더 강력한 형식의 LINQ 공급자와 약간 다릅니다. –