作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望使用 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 ();
}
}
}
最佳答案
尝试使用StAX而不是 SAX。 StAX 允许更多的灵 active ,它是流式 XML 的更好解决方案。 StAX 的实现很少,我对 codehaus 很满意一个,但也有一个来自Sun .它可能会解决你的问题。
关于java - 如何在 Java 中解析 "Event XML"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/198240/
我是一名优秀的程序员,十分优秀!