1

SAX を使用して XML ファイルを処理します。

XMLReader reader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
reader.setFeature("http://xml.org/sax/features/validation", Boolean.TRUE);
reader.setFeature("http://apache.org/xml/features/validation/schema", Boolean.TRUE);

文法 (XSD) を読み込み、リーダーに設定します。

reader.setProperty("http://apache.org/xml/properties/internal/grammar-pool", grammarPool);

文法には、いくつかの要素のいくつかのオプション属性の defaultValue が含まれています。デフォルト値を持つこれらの属性は、ソース XML に存在しない場合でも、この値とともにハンドラーから startElement(ContentHandler#startElement)) メソッドに渡されます。属性が XML に存在するかどうかを何らかの方法で確認できますか?

4

2 に答える 2

3

これが、属性のデフォルト値が機能するはずの方法です。2 つのケース (デフォルトと明示的に指定されているがデフォルト値を使用) を区別する必要がある場合は、スキーマからデフォルトを削除し、代わりにコード レベルで適用する必要があります。

于 2013-02-28T15:42:28.943 に答える