2012-08-17 4 views
4

*.xml 파일에 주어진 노드가 존재하는지 확인하고 싶습니다. 나는 시도 :xml 노드가 존재하는지 확인 하시겠습니까?

string language = node.SelectSingleNode("language") != null ? (node.SelectSingleNode("language").Value == "en" ? "en-US" : "en-US") : "en-US"; 

하지만 난 단지 노드 value.In에 대한 검사가 나는 language 그래서 자신이 Null Reference Ex..을 제공합니다 일부 xml라는 파일 노드가 아닌 한 생각한다. 주어진 노드가 존재하는지 확인하는 방법은 *.xml 파일에 존재합니까? 감사.

+0

결과는 항상 "en-US"이므로 'string language = "en-US"'는 동일합니다! – weston

+0

'node' 자체가 null 인 경우 코드가 NullReferenceException을 던질 수있는 유일한 방법입니다. ** 정확한 ** 코드인지, 해당 노드가 null이 아니며, 예외를 던지고있는이 코드 행이 맞는지 확인할 수 있습니까? –

답변

8

뭔가가 null입니다. 선택된 언어 노드를 null으로 확인 했으므로 node 그 자체가 null입니까?

코드를 여러 줄에 걸쳐 펼치고 중첩 된 ?: 코드는 쉽게 따르지 않으며 기본값과 함수 호출을 반복해야했습니다.

node.SelectSingleNode("language")과 같은 변수를 사용하십시오. 따라서 두 번하지 마십시오. 그러면 버그를 찾는 데 도움이됩니다.

string language = "en-US"; //default 
if(node!=null) 
{ 
    var langNode = node.SelectSingleNode("language"); 
    if(langNode!=null) 
    { 
    //now look at langNode.Value, and overwrite language variable, maybe you wanted: 
    if(langNode.Value != "en") 
    { 
     language = langNode.Value; 
    } 
    } 
} 
관련 문제