특정 특성을 가진 요소가 있는지 여부를 확인하기 위해 구문 분석하는 XML 문서가 있습니다.XML에서 Linq 요소로 특성 별 선택시 개체 참조 오류 가져 오기
을 :내가
item.Descendants().Elements("nameValue");
작업을 수행 할 때의 나는이처럼 보이는 nameValue 노드 있다고 가정 해 봅시다 나는 결과의 무리를 볼 수 있습니다 내가 드릴 다운 할 때 난 속성을
를 볼 수 있습니다
<nameValue idref="myIDRef" name="elementName"/>
이 요소를 idref로 찾는 두 가지 방법을 시도했으며 두 객체 반환 오류를 반환했습니다. 나는 이것이 매우 간단 확신하지만 난 정말
item.Descendants().Select(a => a.Element("nameValue")).Where(b => b.Attribute("idref").Value == "myIDRef");
item.Descendants().Elements("nameValue").Single(a => a.Attribute("idref").Value == "myIDRef");
위 작품의 어느
편집 붙어있어 너무 오랫동안이 쳐다 봤는데 : 내가 알아 낸 것 같아요 왜 작동하는지. 내 nameValue 요소 모음에는 수백 가지 항목이 있지만 모든 속성에 "idref"특성이있는 것은 아닙니다. 특정 특성이 컬렉션에 있었더라도 내 개체 참조 오류가 발생하는 이유는 무엇입니까?
이 내 솔루션은 사용할 수 Linq를 사용하고 XPathSelectElements 대신
var nameValueArr = element.XPathSelectElements("descendant::nameValue[@idref='myIDRef']");
두 번째 요소에는 어떤 문제가 있습니까? 그것은 나를 위해 작동 – Magnetron
나는 두려워하고, 나는 철자와 모든 것을 확인 트리플. 그것은 단지 작동하지 않습니다. 이것으로 작업이 끝났습니다. var nameValueTest = element.XPathSelectElement ("descendant :: nameValue [@ idref = 'myIDRef']"); – JOO
값을 사용하면 찾을 수없는 경우를 제외하고는 값이 사용됩니다. (문자열) b.Attribute ("idref") – jdweng