2012-06-11 2 views
0

현재 XML 스키마가 있으며 코드는 XML 파일을 읽고 스키마에 대해 유효성을 검사하고 데이터베이스에 저장합니다. 앞으로는 스키마 변경이있을 것입니다. 새로운 스키마의 코드를 다시 작성할 필요없이 어떻게 코드가이를 처리 할 수 ​​있습니까?코드 변경없이 XML 스키마 변경 처리

감사합니다,

나를 예를 들어 보겠습니다

<Products> 
    <product id="1"> 
     <name> ABC </name> 
     <desc> good one </desc> 
    </product> 
</products> 

XPath에 매핑 구성 이제 C# 코드를 기반으로 삽입 문을 ID, 이름 및 내림차순를 읽고 생성

Table  Column  XPath 
Product id   //Products/product/id 
Product name  //Products/product/name 
Product desc  //Products/product/desc 

매핑 구성

스키마가 변경되고 새 요소 가격이 추가되고 매핑에 해당 가격이 추가되므로 생성되는 새로운 insert 문에는 price가 포함됩니다.

이 방법이 유용할까요?

답변

1

XML을 구문 분석하고 객체로로드하는 것이 싫다. 이 때문에 다음 방법을 시도해 볼 수 있습니다.

당신이 말하는 XML 데이터를 나타내는 C# 개체를 만듭니다. 그 C# 클래스를 직렬화하면 강력한 형식의 XML 스키마가있는 비올라가됩니다. 또한 앞으로 스키마 변경이 추가로 필요할 경우 단순히 C# 클래스를 수정하고 다시 공유하면 모든 설정이 완료됩니다.

이렇게하면 C# 클래스를 참조 할 수 있고 구문 분석없이 다시 메모리로 역 직렬화 할 수 있으므로 XML 문서를 구문 분석 할 필요가 없습니다 (CLR 내에서 사용한다고 가정).

1

바로 이런 식으로 처리하는 방법은 데이터가없는 잘 알려진 스켈 레탈 XML 스키마를 가지고 코드를 구문 분석하고 스키마를 학습 한 다음 임의의 입력에서 실행되도록하는 것입니다 너는 그것을 준다. XML 스키마가 변경되면 신뢰할 수있는 사용자/관리자 만 가서 알려진 양호한 스켈레톤을 변경하십시오.

데이터베이스가 추가 변경없이 이러한 변경 사항을 처리 할 수 ​​있어야하며 정기적으로 실행되는 몇 가지 테스트가 있어야하며 문제가 발견되면 경고를 표시해야합니다. 이와 같은 '유지 관리가 부족한'프로세스에서 가장 위험한 요소 중 하나는 자주 조용히 작동하지 않으며 고장이났다는 것을 알 길이 없습니다!

약간의 두려움이 있습니다. 질문에 명확하지 않은 태그를 추가했기 때문에 전체 질문을 듣지는 못하지만 잘하면이 도움이됩니다.

1

XML 데이터의 위치가 변경되는 경우 XML 파일에서 추상 정보를 추출하지 않고 (문서에서 물건을 찾는 위치를 설명하는 메타 데이터 포함) 운이 좋지 않습니다. 데이터 요소가 항상 같은 위치에 있으면 XSD 파일을 별도의 파일로 유지하고 필요한 경우 문서를 확인하기 만하면됩니다.

관련 문제