XML 데이터가 포함 된 문자열을 반환하는 함수를 호출하고 있습니다. 이 함수의 작동 방식은 중요하지 않지만 결과 XML은 함수의 성공 여부에 따라 달라질 수 있습니다.예상되는 구조의 XML 확인
기본적으로이 함수는 expect XML 또는 오류 형식의 XML을 반환합니다. 오류에
<SpecificResult>
<Something>data</Something>
</SpecificResult>
:
<ErrorResult>
<ErrorCode>1</ErrorCode>
<ErrorMessage>An Error</ErrorMessage>
</ErrorResult>
내 시스템이 설정하는 방법 내가 할 수있는 것입니다 다음은이 개 결과가 어떻게 보이는지의 기본 샘플 ...
성공에은 간단한 변환 함수를 사용하여 xml 문자열을 클래스로 변환하지만 클래스 유형을 알기 위해서는 my가 필요합니다. 성공하면 SpecificResult이고 변환 할 수 있음을 알게 될 것입니다. 하지만 오류가 발생했는지 먼저 확인하고 싶습니다. 이상적인 최종 결과이 비슷한을 허용 할
...
string xml = GetXML();
if(!IsError(xml))
{
//convert to known type and process
}
그래서 질문의 IsError
기능을 구현하는 가장 좋은 방법은 무엇입니까?
I 옵션의 몇 가지 생각하지만 난 정말 그들 중 하나를 좋아하는 경우에 확실하지 않은 ... XML 문자열이 ErrorResult 클래스에 XML을 변환하고 확인하는 "<ErrorResult>"
- 선택하면 트리를 구문 분석하고
GetXml()
방법 때문에 ErrorResult 노드
덕분에이 나에게 충분히 고체 보인다. msdn이 문서에서 명확하지 않은지 확인하기 위해 실패한'Parse' 시도는 여전히 XDocument (빈 상태 임에도 불구하고)를 반환 할 것입니까? ... 또한, 허용 된 대답을 기다리고 다른 사용자가 입력을 볼 때까지 기다립니다.) – musefan
[XDocument.Parse (string)] (http://msdn.microsoft.com/en-us/library/system. xml.linq.xdocument.parse.aspx)는 실제로 [잘못된 XML을 발견하면 XmlException을 throw합니다] (http://msdn.microsoft.com/en-us/library/bb387040.aspx). 그러나,이 경우 정말 예외적 인 것처럼 보입니다. 그래서 IsError (string) 메쏘드에서 처리하고 싶지는 않을 것입니다. 예외를 호출 체인에서 더 많이 전달할 수있게하십시오. –