2011-08-11 3 views
0

2つのXmlファイルがあります。最初のファイルはInput Xml、もう1つはTemplate Xmlです。 Template Xmlは静的なXMLであり、Template XmlInput Xmlのサブセットであるかどうかを確認したいと思います。これをC#でどのように達成するのですか?C#で1つのXMLが別のXMLのサブセットであるかどうかを確認する方法

サブセットでは、に記載されているXmlタグと属性が同じ値でInput Xmlに存在するかどうかを確認したいということです。

+1

私はXMLスキーマファイルを使用してreccommedう(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)のように呼び出します。似たような実装します。あなたは、同様の属性を確認するために、これを拡張することができます。

関連する問題