2010-11-18 12 views
4

xmlschémaのいくつかのルールでJavaオブジェクトの値をチェックすることは可能ですか?xmlスキーマでjava値を確認する

例えば、String txt = "blablabla"があります。<xs:element name="foo" type="string32"/>の場合はそれを確認し、32文字の場合は32文字に制限します。長さ

可能ですか? xmlスキーマとjaxbで可能でない場合は、可能な他のスキーマ言語がありますか?

ありがとうございました。

答えて

2

次の操作を行うことができます:

import java.io.File; 
import javax.xml.XMLConstants; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.util.JAXBSource; 
import javax.xml.validation.Schema; 
import javax.xml.validation.SchemaFactory; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     Schema schema = sf.newSchema(new File("customer.xsd")); 

     JAXBContext jc = JAXBContext.newInstance(Customer.class); 

     Customer customer = new Customer(); 
     // populate the customer object 
     JAXBSource source = new JAXBSource(jc, customer); 
     schema.newValidator().validate(source); 
    } 

} 

より詳細な例については以下を参照してください

1

Javaオブジェクトをxmlにマップし、次にオブジェクトをxmlにマーシャリングし、xmlをスキーマ検証を行うパーサーに供給する必要があります。 xmlスキーマを解析してスキーマを読み取るコードを作成し、スキーマ情報を使用してオブジェクトのバリデーターを構築する方がよいでしょう。そうすれば、オブジェクトをXMLにマーシャリングして検証する必要はありません。

+1

は、1年の男の仕事であることを私には思えます!それを行うライブラリはありますか、または簡単な例を提供できますか?ありがとう。 – Istao

+1

私の答えを確認するには、javax.xml.validationライブラリを使用してこれを行うことができます:http://stackoverflow.com/questions/4218935/checking-a-java-value-with-an-xml-schema/4219090#4219090 –

関連する問題