2009-08-11 3 views
1

마치 바퀴를 재발 명하려는 느낌. 인스턴트 메신저 (단순 java.lang.String)에서 XML 형식으로 메시지 페이로드 (예 : 클라이언트를 통해 소켓에서). 나는 XML 문서의 구조가 정말이 보이는 것을 확인 할XML 형식 확인

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

</update> 

: 아래

처럼 페이로드는 볼 수 있었다 무엇 예입니다. 올바른 XML 도구가 이미이 기능을 사용할 수 있다고 생각하십니까? 이 문서에 대한 XML Schema이 필요한 것처럼

답변

3

당신은 스키마하여 XML의 유효성을 검사해야합니다. 여기

은 JAXB와 예입니다 :

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

경우 검증의 javax.xml.validation 패키지를 사용할 수 있습니다 원하는 : 당신이 다른 형태로 문서를 구문 분석하는 경우

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))); 

을 , 해당 프로세스의 일부로 유효성을 검사 할 수 있습니다 (예 : DocumentBuilder.setSchema 사용).

1

스키마 검사에 XSD를 사용하십시오. DTD는 쓸모가 없습니다.

당신이 쉬운 방법으로 XSD에 대한 자세한 내용을 알고 싶다면, 당신은 액체 XML을 스튜디오를 다운로드 할 수 있습니다, 그것은 무료 커뮤니티 에디션을 가지고 http://www.liquid-technologies.com/XmlStudio/XmlStudio.aspx

이 회사에 대한 가장 좋은 것은 그것이 매우 사용자 - 제공합니다 XSD에 대한 친숙한 자습서. http://www.liquid-technologies.com/Tutorials/XmlSchemas/XsdTutorial_01.aspx

1

많은 사람들이 XML 스키마를 언급하지만, Relax NG을 조금 더 단순하게 보길 원할 수 있습니다.