노드가 존재하는지 확인할 때“표현식을 노드 세트로 평가해야한다”오류를 어떻게 해결합니까?

StackOverflow https://stackoverflow.com/questions/157044

  •  03-07-2019
  •  | 
  •  

문제

다음 .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));

이전 표현식은 부울으로 평가되었으며, 이는 예외 오류를 설명합니다. 도와 주셔서 감사합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top