gpt4 book ai didi

java - 如何使用 Java 和 SAX 解析带有偶尔 XML 标记的纯文本文件?

转载 作者:行者123 更新时间:2023-12-01 15:34:08 25 4
gpt4 key购买 nike

我有一个来自服务器的相当大的日志文件,其中包含纯文本。服务器记录它所做的每一件事,有时它会打印我有兴趣解析的 xml 标签。举个例子:

-----------log file-------------
bla bla bla random text
<logMessage>test Message</logMessage>
some more random server output
<logMessage>some other message</logMessage>
bla bla bla
end of log file

我只想从 标签中提取数据并忽略其余部分。我正在使用 Java 和 SAX,但 SAX 解析器要求文件内容严格采用 XML 格式,并且它无法处理这种类型的文件。有没有办法告诉 SAX 忽略/忽视文件不是格式良好的 XML 的事实?还有什么选择呢?逐行读取文件并查找标签? :(

最佳答案

为了简单起见,我会选择逐行读取文件并查找 <logMessage></logMessage>代币。请注意,您可以创建一个此类通用解析器,它采用委托(delegate)解析器并向其提供类似 SAX 的事件。 (可能有用,具体取决于重写解析器的工作量,现在您基于 SAX 的解决方案结果不起作用。)

编辑:如果您对多种元素感兴趣,则委托(delegate)方法也很有用。如果这些碰巧具有复杂(嵌入)的 XML 层次结构,您甚至可以将开始和结束标记之间的所有字符整理到缓冲区中,然后将该缓冲区提供给真实 SAX 解析器。在大多数情况下,这有点过分了,但同样,如果您的日志本质上包含 XML 转储,那么它可能比尝试自己解析所有日志更合适。

关于java - 如何使用 Java 和 SAX 解析带有偶尔 XML 标记的纯文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182868/

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