我正在寻找使用Java来解析由远程设备生成的正在进行的事件驱动XML流。这里有两个事件的简化示例:如何解析Java中的“事件XML”?
<?xml version="1.0"?>
<Event> DeviceEventMsg
<Param1>SomeParmValue</Param1>
</Event>
<?xml version="1.0"?>
<Event> DeviceEventMsg
<Param1>SomeParmValue</Param1>
</Event>
好像SAX比DOM更适合这个,因为它是一个持续的流,虽然我不熟悉萨克斯。不要对我的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();
}
}
}
数据流更新有多快? xml头文件之间的连接是否丢失? – simon 2008-10-13 16:52:26
这些事件是家庭自动化设备的开启和关闭事件,所以它们可以分开几秒,但长时间不活动。事件之间保持连接。 – 2008-10-13 17:06:10