2011-08-11 3 views
0

두 개의 XML 파일이 있는데 첫 번째 파일은 Input Xml이고 두 번째 파일은 Template Xml입니다. Template Xml은 정적 XML이며 Template XmlInput Xml의 하위 집합인지 확인하고 싶습니다. C#에서 어떻게 이것을 할 수 있습니까?하나의 XML이 C#에서 다른 XML의 서브 세트인지 확인하는 방법

하위 집합은 동일한 값을 가진 Input XmlTemplate Xml에 언급 된 Xml 태그 및 특성이 있는지 확인하려는 것입니다.

+1

(XSD)를 사용하지 않는 것이 좋습니다. http://en.wikipedia.org/wiki/XML_schema – MadcoreTom

+0

특정 값을 가진 특정 태그 및 속성이 있는지 확인하고 싶지만 상관하지 않습니다. 추가 태그에 대해. 또한 XML에는 이미 수정할 수없는 XSD가 있습니다. 아마도 누락 된 것일 수 있습니다. 어떻게하면 XSD를 사용할 수 있습니까? – Rishabh

답변

0

Conatains는 매우 개방이 종료된다. 태그와 속성의 순서는 어떨까요? 순서는 동일해야하며 태그의 깊이는 무엇입니까? 템플릿과 일치하는 태그가 xml (깊이에 관계 없음)에 존재한다고 가정하면 다음 확장 방법을 사용할 수 있습니다.

public static bool SupportsTemplate(this XmlDocument xmlDoc, XmlNode template) { 
     bool found = true; 
     var nodes = template.ChildNodes; 
     foreach(XmlNode node in nodes){ 
      found = xmlDoc.SelectSingleNode("//" + node.Name) == null ? false : true; 
      if (!found) break; 
      if (node.HasChildNodes) 
       found = xmlDoc.SupportsTemplate(node); 
      if (!found) break; 
     } 
     return found; 
    } 

& 최적화되지 않은 코드 (xmlDoc.SupportsTemplate (template.DocumentElement 같은 전화)를 테스트하지 않습니다. 비슷한 구현합니다. 당신은뿐만 아니라 속성을 확인하려면이 확장 할 수 있습니다. 내가 XML 스키마 파일을 사용하여 reccommed 것

관련 문제