문제

유효성 검사 오류에 대한 더 유용한 정보를 얻을 수 있는 방법이 있나요?XmlSchemaException은 나에게는 거의 이해되지 않는 오류의 줄 번호와 위치를 제공합니다.결국 XML 문서는 일시적인 텍스트 표현에 관한 것이 아닙니다.무엇이 잘못되었는지, 노드 이름(또는 xpath)을 지정하여 문제의 원인을 찾아 해결할 수 있도록 열거된 오류(또는 오류 코드)를 얻고 싶습니다.

편집하다:나는 유효한 XML 문서에 대해 이야기하고 있습니다. 단지 특정 스키마에 대해서는 유효하지 않습니다!

도움이 되었습니까?

해결책

XmlReaderSettings에 스키마가 포함된 XmlReader를 설정한 다음 이를 사용하여 입력 스트림 노드를 노드별로 읽는 방식으로 이를 수행할 수 있습니다.마지막으로 읽은 노드를 추적하고 유효성 검사 오류가 발생할 때 문서의 현재 위치를 꽤 잘 알 수 있습니다.

내 생각에 이 연습을 해보면 검증 오류가 많이 있다는 것을 알게 될 것입니다(예:필수 요소 누락) 오류 노드의 개념이 별로 의미가 없는 경우입니다.예, 이 경우에는 분명히 오류가 있는 것이 부모 요소입니다. 그러나 실제로 오류를 유발한 것은 독자가 필요한 요소를 보지 못한 채 종료 태그를 발견했기 때문입니다. 이것이 바로 오류 줄과 위치가 종료 태그를 가리키는 이유입니다.

다른 팁

내 경험상, 당신은 라인 번호와 구문 분석 위치를 얻는 것이 운이 좋다.

당신은 할 수있는 dtd를 통해 검증을 고려할 수 있습니다 때때로 그러나 현재 작업중 인 프로젝트에서 약간 더 흥미로운 오류를 제공하면 XSLTS를 사용하여 검증합니다. 변환은 구문을 확인하고 오류를 출력 변환 텍스트로보고합니다. 더 친근한 오류 확인을 원한다면 그 경로를 고려할 것입니다. 우리에게 빈 출력은 오류가 없음을 의미합니다. 그렇지 않으면 XSLT 처리에서 오류가 무엇인지 및 위치에 대한 좋은 세부 사항을 얻습니다.

개인적으로 나는 더 자세한 오류를 얻는 방법을 잘 모르겠습니다. 문서를 형식으로 열고 언급 된 위치로 이동하여 오류를 쉽게 찾을 수 있습니다.

코드가 파일을 유효한 XML로 구문 분석 할 수 없으면 XPATH 또는 기타 이름의 XML 세부 사항을 제공하기가 매우 어렵습니다.

이것은 쉬운 일이 아닌 것 같습니다. Robert Rossney의 답변은 내 문제를 해결하는 프로그래밍 방식에 가장 가깝습니다. XSL 솔루션을 계속 사용하겠습니다. 유효성 검사 오류를 해결하는 더 나은 방법을 찾는 사람은이 스레드에 응답 할 수 있습니다.

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