Я ищу лучший способ для анализа различных документов XML с помощью приложения Java. В настоящее время я делаю это с SAX и пользовательским обработчиком контента, и он отлично работает - быстрый и стабильный.
Я решил изучить вариант, имеющий ту же программу, которая в настоящее время получает документ XML одного формата, получить два дополнительных формата документов XML с различными изменениями элементов XML. Я надеялся просто заменить ContentHandler на соответствующий, основанный на первом «startElement» в документе ... но, э-э-э, ContentHandler установлен и затем документ анализируется! 1005 *
... constructor ...
{
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
SAXParser sp = spf.newSAXParser();
parser = sp.getXMLReader();
parser.setErrorHandler(new MyErrorHandler());
} catch (Exception e) {}
... parse StringBuffer ...
try {
parser.setContentHandler(pP);
parser.parse(new InputSource(new StringReader(xml.toString())));
return true;
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
...
Так что, похоже, я не могу сделать это так, как я изначально думал, что смогу.
Как говорится, я смотрю на это совершенно неправильно? Каков наилучший метод для анализа нескольких отдельных документов XML с одним и тем же кодом обработки XML? Я пытался спросить в более общем посте ранее ... но, мне кажется, я был слишком расплывчатым . Из соображений скорости и эффективности я никогда не смотрел на DOM, потому что эти XML-документы довольно большие, и система получает около 1200 каждые несколько минут. Это только один способ отправки информации
Чтобы сделать этот вопрос слишком длинным и добавить к моей путанице; ниже приведен макет некоторых различных XML-документов, для которых мне бы хотелось иметь один SAX, StAX или ?? С парсером чисто разобраться.
products.xml:
<products>
<product>
<id>1</id>
<name>Foo</name>
<product>
<id>2</id>
<name>bar</name>
</product>
</products>
stores.xml:
<stores>
<store>
<id>1</id>
<name>S1A</name>
<location>CA</location>
</store>
<store>
<id>2</id>
<name>A1S</name>
<location>NY</location>
</store>
</stores>
managers.xml:
<managers>
<manager>
<id>1</id>
<name>Fen</name>
<store>1</store>
</manager>
<manager>
<id>2</id>
<name>Diz</name>
<store>2</store>
</manager>
</managers>