2009-04-02 3 views
0

私はスキーマを持っており、私は文書を持っています。 XMLフラグメントをそのドキュメントに挿入できるようにしたいが、それはスキーマに従って有効でなければならない。xsdに対して無効な場合、XmlDocumentへのノード挿入を防止できますか?

C#でこれを行うことはできますか?

+0

はい、可能です。挿入されたフラグメントを検証するために、スキーマに対してドキュメントを検証する方法を尋ねていますか? –

+0

文書を無効にする場合、ノードの挿入を防止したいと思います。 –

答えて

0

これまでにこれまでに行ったことはありませんが、XmlDocumentのNodeChanged、NodeInserted、NodeRemovedイベントを使用できます(http://msdn.microsoft.com/en-us/library/system.xml.xmldocument_events.aspx参照)。イベントが発生すると、ドキュメントの再検証を行うことができます。検証に失敗した場合は、ノードの変更、削除、または再挿入ができます。

さらに複雑になるXmlSchemaValidatorクラスを使用することもできます。これはプッシュベースのモデルに従い、検証中は基本的に現在の点で何が有効かを示します。私はあなたが挿入ポイントまで検証し、次に挿入されるノードがそのポイントで有効であることを確認するためにチェックできると思います。私はこれを使って、スキーマ・セットに準拠したXML文書を生成しました。私はそれを単純な検証のために使ったことはありません。

関連する問題