Если вы думаете о XML и с помощью Java, вы можете попробовать мой XML парсер генератор, ANTXR, который базируется Antlr 2.7.x
См http://javadude.com/tools/antxr/index.html подробности
пример:
XML файла:
<?xml version="1.0"?>
<people>
<person ssn="111-11-1111">
<firstName>Terence</firstName>
<lastName>Parr</lastName>
</person>
<person ssn="222-22-2222">
<firstName>Scott</firstName>
<lastName>Stanchfield</lastName>
</person>
<person ssn="333-33-3333">
<firstName>James</firstName>
<lastName>Stewart</lastName>
</person>
</people>
Анализатор скелет:
header {
package com.javadude.antlr.sample.xml;
}
class PeopleParser extends Parser;
document
: <people> EOF;
<people>
: (<person>)*
;
<person>
: (<firstName>
| <lastName>
)*
;
<firstName>
: PCDATA
;
<lastName>
: PCDATA
;
Парсер, что на самом деле делает что-то с данными:
header {
package com.javadude.antlr.sample.xml;
import java.util.List;
import java.util.ArrayList;
}
class PeopleParser extends Parser;
document returns [List results = null]
: results=<people> EOF
;
<people> returns [List results = new ArrayList()]
{ Person p; }
: (p=<person> { results.add(p); } )*
;
<person> returns [Person p = new Person()]
{ String first, last; }
: (first=<firstName> { p.setFirstName(first); }
| last=<lastName> { p.setLastName(last); }
)*
;
<firstName> returns [String value = null]
: pcdata:PCDATA { value = pcdata.getText(); }
;
<lastName> returns [String value = null]
: pcdata:PCDATA { value = pcdata.getText(); }
;
Я использую это в течение многих лет, и когда я показал его людям на работе , после первоначальной «привыкания к грамматике» кривой обучения, они действительно любят ее.
Обратите внимание, что вы можете использовать внешний интерфейс SAX или XMLPull (и, если хотите, front-end может выполнить проверку). Код для запуска анализатора выглядит следующим образом:
// Create our scanner (using a simple SAX parser setup)
BasicCrimsonXMLTokenStream stream =
new BasicCrimsonXMLTokenStream(new FileReader("people.xml"),
PeopleParser.class, false, false);
// Create our ANTLR parser
PeopleParser peopleParser = new PeopleParser(stream);
// parse the document
peopleParser.document();
Какой файл конфигурации? Тот, который вы собираетесь создать? тот, который уже существует? Какой формат он использует? –
Также, какой язык программирования вы используете? Скорее всего, есть уже библиотеки, которые вы можете использовать для обработки этой работы. – bchang