2009-08-11 17 views
1

車輪を再構築しようとしているような感じです。 XML形式(単純なjava.lang.String内)のメッセージペイロード(クライアントからソケットなど)を持つIm。XML形式の確認

<update> 
    <type>newsource</type> 
    <sources> 
     <source>vedbyroad box 1492</source> 
    </sources> 

</update> 

私は、XML文書の構造は本当にこのように見えることを確認したい:

以下

は、ペイロードがどのように見えることができるものの例です。正しいxmlツールのような感じがすでにこれに利用可能ですか?

答えて

3

XMLをスキーマで検証する必要があります。

SchemaFactory schemaFactory = SchemaFactory 
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = schemaFactory.newSchema(new File("SchemaValidation.xsd")); 

Validator validator = schema.newValidator(); 
validator.validate(new StreamSource(new StringReader(xml))); 

あなたには、いくつかの他のフォームに文書を解析している場合:あなたはだけjavax.xml.validationパッケージを使用することができ、検証が必要な場合

JAXBContext jc = JAXBContext.newInstance("com.acme.foo:com.acme.bar"); 
Umarshaller u = jc.createUnmarshaller(); 
u.setValidating(true); 
SchemaFactory sf = SchemaFactory.newInstance(
     javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = sf.newSchema(new File("mySchema.xsd")); 
u.setSchema(schema); 
MyObject myObj = (MyObject)u.unmarshal(new File("myFile.xml")); 
2

あなたが探しているのは、XML DTD(Documenttype Definition)です。ここにはlink to get you startedがあります。

+4

DTDは廃止されました。これ以上使用する正当な理由は全くありません。 – skaffman

+1

DTDなしでエンティティをどのように定義しますか? –

+0

エンティティも廃止されていませんか? – skaffman

3

:ここ

は、JAXBと例ですそのプロセスの一部として検証することができます(たとえば、DocumentBuilder.setSchemaを使用)。

1

スキーマ検査にXSDを使用します。 DTDは時代遅れです。

あなたは簡単な方法でXSDについての詳細をお知りになりたい場合は、あなたが 液体のXmlメーカーをダウンロードすることができ、それは自由なコミュニティ版を持っている http://www.liquid-technologies.com/XmlStudio/XmlStudio.aspx

この会社についての最もよい事は、それは非常にUSER-を提供していますXSDの使いやすいチュートリアルです。 http://www.liquid-technologies.com/Tutorials/XmlSchemas/XsdTutorial_01.aspx

1

XMLスキーマに言及している人は多いが、Relax NGのほうがやや簡単であると思うかもしれない。

関連する問題