노드가 존재하는지 확인할 때“표현식을 노드 세트로 평가해야한다”오류를 어떻게 해결합니까?
문제
다음 .NET 코드를 사용하여 노드의 존재를 확인하려고합니다.
xmlDocument.SelectSingleNode(
String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
이것은 항상 제기됩니다.
XPathException : 표현식은 노드 세트로 평가해야합니다.
왜이 오류가 발생하고 어떻게 해결할 수 있습니까? 고맙습니다.
해결책
주어진 표현은 노드 세트가 아닌 부울로 평가됩니다. ProjectName이 매개 변수화 된 텍스트와 같은지 확인하고 싶다고 가정합니다. 이 경우 작성해야합니다
//ErrorTable/ProjectName[text()='{0}']
주어진 조건과 일치하는 모든 노드 (노드 세트) 목록이 제공됩니다. 이 목록은 비어있을 수 있으며,이 경우 샘플의 C#-expression이 NULL을 반환합니다.
나중에 생각 : 당신 ~할 수 있다 원래 XPath 표현식을 사용하지만 SelectSingLenode는 아니지만 다음과 같이 평가하십시오.
(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
다른 팁
노력하다:
Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = '{0}'", projectName));
if (node != null) {
// and so on
}
편집 : 어리석은 오류
XPath 표현에는 미묘한 오류가 포함되어 있습니다. 그것은 다음과 같았어야했을 것입니다.
xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName[text()='{0}']", projectName));
이전 표현식은 부울으로 평가되었으며, 이는 예외 오류를 설명합니다. 도와 주셔서 감사합니다!
제휴하지 않습니다 StackOverflow