Проверка формата XML - PullRequest
1 голос
/ 11 августа 2009

Похоже, я собираюсь заново изобрести колесо. У меня есть полезная нагрузка сообщения (например, от клиента через сокет) в формате XML (в простой java.lang.String).

Ниже приведен пример того, как может выглядеть полезная нагрузка:

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

</update>

Я хочу убедиться, что структура XML-документа действительно выглядит следующим образом. Чувствуете, что для этого уже доступен правильный инструмент xml?

Ответы [ 6 ]

7 голосов
/ 11 августа 2009

Похоже, вам нужна XML-схема для этого документа. Вот учебник на основе Java .

3 голосов
/ 11 августа 2009

Если вы только хотите получить подтверждение, можно использовать пакет 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 ).

3 голосов
/ 11 августа 2009

Вам необходимо проверить свой 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 голосов
/ 11 августа 2009

Я думаю, что вы ищете XML DTD (определение типа документа). Вот ссылка , с которой можно начать .

1 голос
/ 11 августа 2009

Хотя многие люди упоминают XML-схему, вы можете захотеть взглянуть на Relax NG для чего-то немного более простого.

1 голос
/ 11 августа 2009

использовать XSD для проверки схемы. DTD устарел.

Если вы хотите узнать больше о XSD простым способом, вы можете скачать Liquid Xml Studio, у нее есть бесплатная версия для сообщества http://www.liquid -technologies.com / XmlStudio / XmlStudio.aspx

Лучшее в этой компании - это очень удобное руководство по XSD. http://www.liquid -technologies.com / Учебники / XmlSchemas / XsdTutorial_01.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...