내 라이브러리의 여러 객체에 대해 사용자 지정 데이터를 제공하기 위해 여러 XElement
객체를 사용하고 있습니다. 전체 XML 파일의 구조를 지정하는 것을 피하려고합니다. 라이브러리는 필요한 특정 요소가 올바르게 구조화되어있는 한 전체 XML이 어떤 모습인지 신경 쓰지 않아야하기 때문입니다.XElement의 XML 스키마 유효성 검사
이 목적을 달성하기 위해 필자는 내 클래스 요구 사항 각각에 대해 스키마를 정의하는 3 개의 개별 XSD
파일을 가지고 있지만 스키마에 대해 XElement의 유효성을 검사하는 데 문제가 있습니다. 해결 방법 없이는 그렇게 할 방법이없는 것 같습니다.
MSDN 페이지에서 XElement.Validate()
확장 방법은 큰 파일의 하위 요소의 유효성을 다시 검사하는 것으로 나타납니다. XElements
중 하나에 존재한다고 가정 할 수 없으므로 XmlSchemaObject
인수가 내 문제의 원인입니다. 나는 내 XmlSchemaSet
에서 XmlSchemaObject
인수로 전달하기 위해 XmlSchemaElement
을 붙잡음으로써이 문제를 해결할 수 있다고 생각하지만, XmlSchemaSet
은 이미 모든 것을 정의하고 있기 때문에, 그렇게해야한다는 것이 이상하게 보입니다.
전체 XDocument
의 유효성을 처음으로 확인하지 않고 XElement
의 유효성을 검사 할 수있는 더 나은 옵션이 있습니까?
또는 비즈니스 계층에서 응용 프로그램의 스키마 유효성 검사를 처리하고 라이브러리가 XElement
이 제대로 형성되었다고 가정해야합니다 (이 옵션을 고려했지만 개인적인 선호는 예외를 던지지 않으려 고하고 호출 메서드는 XElement
이 반환 매개 변수를 통해 유효하지 않음을 알고 있습니다.
나는 왜 내 자신의'XElement.Validate()'확장 메소드에서 코드를 래핑하는 것을 생각하지 못했는지 모른다. 당신이 그렇게 말할 때 논리적 인 것처럼 보입니다. 'XDocument'를 만드는 것은 또 다른 좋은 아이디어입니다. 너무 나 (나는 그것을 변환하는 방법을 찾으려고 너무 많은 시간을 보냈고, 나는 명백한 해결책을 놓쳤습니다.)이 발생 했어야합니다. 나는 둘 다 실험하고 내가 선호하는 것을 보게 될 것이다. – psubsee2003