3

検証のためにXSDが接続されたXmlReaderを使用しています。

XMLドキュメントが読み取られて検証されているので、C#コードで、特定の要素のXSDで指定された「maxLength」値を決定したいと思います。たとえば、私のXSDフラグメントは非常に単純に次のように定義されています。

<xsd:element name="testing" minOccurs="0">
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="10"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>

'minOccurs'値は、次を使用して簡単に取得できます。

myReader.SchemaInfo.SchemaElement.MinOccurs;

しかし、どうすれば'maxLength'値(上記のフラグメントの例では値10)を取得できますか?

''がこの情報を提供するかもしれないと思いmyReader.SchemaInfo.SchemaElement.Constraintsましたが、そのコレクションの'カウント'は常にゼロです。

ありがとう、

パット。

4

3 に答える 3

4

ここで見つけることができます:Accessing XML Schema Information During Document Validationこれを行う方法の良い説明とその他。

于 2009-10-20T16:47:17.453 に答える
1

myReader.SchemaInfo を使用してこれを行う方法はありますが (najmeddine の応答を参照)、SchemaInfo オブジェクトで公開されていないものにアクセスする必要がある場合に備えて...

..XSD は XML 言語です。XSD ファイルをロードするだけで、XPath を使用して「testing」要素の定義とその maxLength を見つけることができます。

于 2009-10-20T16:46:51.407 に答える