2016-06-15 2 views
3

私はProperties#storeToXMLを使用してjava.util.PropertiesをXML形式に変換します。ただし、デフォルトでは、それはそれのためのDTDスキーマとXMLを生成します。XSDスキーマを使用して 'storeToXML'によって生成されたJavaプロパティを記述する

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 
    ... 
</properties> 

ではなく、それのためにXSDスキーマを使用することは可能ですか?どうすれば再設定できますか?

+0

私は、オラクルのドキュメントを「DTD期間」と読みました。私はXSDに切り替えることができるというヒントは見つけられませんでした。しかし、ドキュメントは、実際には "使用されていない"と言っています。一意に名前を付けるだけです。だから私にとっては疑問が生じます:なぜあなたはそれをしたいのですか? – Fildor

+1

@Fildor私のアプリケーションが一貫性のために生成するすべてのXMLに対してXSDスキーマを持ちたいだけです。 –

答えて

3

デフォルトのクラスを使用すると、Doctype宣言をXSDベースのアプローチに変更する方法がないようです。

しかし、(少なくともジャワ8)の挙動を保存するXMLにinterventingのプラグイン方法があるように思われる:に内部方法Properties.storeToXml代表は(パッケージsun.util.spiから)XmlPropertiesProviderをロードしました。

このプロパティプロバイダは、システムプロパティ "sun.util.spi.XmlPropertiesProvider"または(見つからない場合)service loader mechanismをロードして読み込まれます。このアプローチで

あなたはXmlPropertiesProviderを自分で実装する(それは方法loadstoreと抽象クラスだ)と、独自の方法でこれらのXMLの部分を行うことができます。

+0

"一貫性"の理由だけですか?一番上のほうが私に似ているようだ。しかし、可能性を見いだすための名誉! – Fildor

関連する問題