2011-11-13 21 views
2

私の目標: 大きなXMLスキーマ仕様の要素を検索したいと思います。複数のXSDファイルからのコンパイル(インポートの使用)。LINQ - XMLスキーマ - 複数のXSDファイルのインポート(.NET)

LINQは使用できますか?どのように私は全体のSOM(スキーマオブジェクトモデル)をメモリに保存し、次に尋ねることができますか?

私が試した:

Dim reader As XmlTextReader = New XmlTextReader(path) 
Dim myschema As XmlSchema = XmlSchema.Read(reader, AddressOf ValidationCallback) 

をしかし、私は、ここでLINQを使用する方法は考えています。

答えて

1

複数のスキーマを管理する最も良い方法は、XmlSchemaSetを使用することです。スキーマをXmlSchemaSetに追加してコンパイルします。これはあなたの「SOMを記憶に」答えるはずです。

コンパイル済みのXmlSchemaSetに対してLINQを使用する方法については、解決しようとしている問題の種類によって大きく異なります。たとえば、XML名前空間内のすべての要素を取得しようとしているとします。あなたはこのようなことを書いているかもしれません(私はC#でそれを表現していることを実感しています。

XmlSchemaSet xset = new XmlSchemaSet(); 
xset.Add(XmlSchema.Read(...); 
xset.Compile(); 
var query = from XmlSchemaElement element in xset.GlobalElements.Values where element.QualifiedName.Namespace == "urn:tempuri-org:mine" select element;    
foreach(XmlSchemaElement element in query) DoSomething(); 

別の例では、Distinct句を使用して、セットを構成する一連のXML名前空間を収集できます。私はこれらを願っています

List<string> query1 = (from XmlSchema schema in xset.Schemas() select schema.TargetNamespace).ToList(); 
IEnumerable<string> xmlns = query1.Distinct(); 

はあなたのアイデアを与える...

関連する問題