xmlschémaのいくつかのルールでJavaオブジェクトの値をチェックすることは可能ですか?xmlスキーマでjava値を確認する
例えば、String txt = "blablabla"
があります。<xs:element name="foo" type="string32"/>
の場合はそれを確認し、32文字の場合は32文字に制限します。長さ
可能ですか? xmlスキーマとjaxbで可能でない場合は、可能な他のスキーマ言語がありますか?
ありがとうございました。
xmlschémaのいくつかのルールでJavaオブジェクトの値をチェックすることは可能ですか?xmlスキーマでjava値を確認する
例えば、String txt = "blablabla"
があります。<xs:element name="foo" type="string32"/>
の場合はそれを確認し、32文字の場合は32文字に制限します。長さ
可能ですか? xmlスキーマとjaxbで可能でない場合は、可能な他のスキーマ言語がありますか?
ありがとうございました。
次の操作を行うことができます:
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);
}
}
より詳細な例については以下を参照してください
Javaオブジェクトをxmlにマップし、次にオブジェクトをxmlにマーシャリングし、xmlをスキーマ検証を行うパーサーに供給する必要があります。 xmlスキーマを解析してスキーマを読み取るコードを作成し、スキーマ情報を使用してオブジェクトのバリデーターを構築する方がよいでしょう。そうすれば、オブジェクトをXMLにマーシャリングして検証する必要はありません。
は、1年の男の仕事であることを私には思えます!それを行うライブラリはありますか、または簡単な例を提供できますか?ありがとう。 – Istao
私の答えを確認するには、javax.xml.validationライブラリを使用してこれを行うことができます:http://stackoverflow.com/questions/4218935/checking-a-java-value-with-an-xml-schema/4219090#4219090 –