Я хочу использовать Java для анализа текущего потока XML диска событий, сгенерированного удаленным устройством. Вот упрощенный образец двух событий:
<?xml version="1.0"?>
<Event> DeviceEventMsg
<Param1>SomeParmValue</Param1>
</Event>
<?xml version="1.0"?>
<Event> DeviceEventMsg
<Param1>SomeParmValue</Param1>
</Event>
Кажется, что SAX больше подходит для этого, чем DOM, потому что это непрерывный поток, хотя я не так знаком с Sax. Не кричите на меня за структуру XML - я это уже знаю и не могу изменить.
И да, устройство отправляет директиву xml перед каждым событием. Моя первая проблема заключается в том, что вторая инструкция по обработке xml квакает парсер SAX.
Кто-нибудь может предложить способ обойти это?
Код, который я использую до сих пор, который квакает во второй инструкции обработки XML:
public class TestMe extends HandlerBase {
public void startDocument () throws SAXException
{
System.out.println("got startDocument");
}
public void endDocument () throws SAXException
{
System.out.println("got endDocument");
}
public void startElement (String name, AttributeList attrs) throws SAXException
{
System.out.println("got startElement");
}
public void endElement (String name) throws SAXException
{
System.out.println("got endElement");
}
public void characters (char buf [], int offset, int len) throws SAXException
{
System.out.println("found characters");
}
public void processingInstruction (String target, String data) throws SAXException
{
System.out.println("got processingInstruction");
}
public static void main(String[] args) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser saxParser = factory.newSAXParser();
// using a file as test input for now
saxParser.parse( new File("devmodule.xml"), new TestMe() );
} catch (Throwable err) {
err.printStackTrace ();
}
}
}