gpt4 book ai didi

java - 如何在 Java 中解析 "Event XML"?

转载 作者:行者123 更新时间:2023-11-30 09:58:56 25 4
gpt4 key购买 nike

我希望使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com