0

.net と C# を使用して、スキーマに対して XML を検証する際に問題が発生しています。

ValidationEventHandler で XmlReaderSettings を使用しています。

ただし、これは、同じレベルの次のタグをチェックするのではなく、XML ファイル内の特定のレベルで最初のエラーが発生した後にエラーのキャッチを停止するように見えるため、基本的に XML ファイル内のすべてのタグをチェックするわけではありません。エラーが見つかったときにレベルをスキップします。

この種の検証に成功した人からアドバイスをもらいたいと思っていました。

どうもありがとう

4

2 に答える 2

1

これは、スキーマで が定義されているように聞こえますがxsd:sequence、ドキュメント内の要素の順序がスキーマで定義されている要素の順序と一致しない場合にエラーが発生します。

このスキーマを考えると:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema 
    attributeFormDefault="unqualified" 
    elementFormDefault="qualified" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Dog">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Age" type="xsd:int"/>
                <xsd:element name="Name" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

およびこの XML:

<Dog>
    <Name>Rex</Name>
    <Age>three</Age>
</Dog>

検証によって 2 つのエラーが発生すると想像できます。

1. The element 'Dog' has invalid child element 'Name'.
2. The 'Age' element is invalid - The value 'three' is invalid according to its datatype

ただし、最初のエラーしか表示されません。これは、無効な子要素の最初のエラーによりXmlReader、ドキュメントの残りの部分を解析することが不可能になるためです。

于 2009-01-29T19:46:04.213 に答える
0

XMLReader は、

XML データへの高速で非キャッシュの順方向アクセスを提供するリーダー。

APIドキュメントとアプリケーションの動作の説明から、例外がスローされ、致命的ではないこと(警告のログ記録など)を実行し、制御を問題のある要素の 1 レベル上のバリデーター。

ちなみに、xml 要素は「タグ」ではなく「要素」と呼ばれます。

于 2009-01-29T19:33:27.563 に答える