【问题标题】:Parse text file tags as xml - Java将文本文件标签解析为 xml - Java
【发布时间】:2017-03-09 18:31:29
【问题描述】:

我有一个日志文本文件,其中包含如下几个标签:

<log level="info" id="12144" ....> <msg> test msg </msg> </log>

我想解析这个文件,因此我认为既然它看起来像 XML,我可以将 xml (&lt;?xml version="1.0"?>) 和根 (&lt;file&gt;) 标记添加到文件中,然后使用 DOM Parser 解析它。

但目前,我面临在文件开头添加文本的问题,因为所有可用选项都是覆盖,或将原始文件复制到临时位置,然后添加预期的文本,这是不适用的对我来说,因为我正在处理大于 100 MB 的文件。

I use the below code to try to add the text at the beginning, and I tried several solutions or classes other than RandomAccessFile

RandomAccessFile RAF = new RandomAccessFile(file, "rw");
        RAF.getChannel().position(0);

        RAF.write(("<?xml version=\"1.0\" encoding=\"UTF-8\"?> \r\n <file> \r\n").getBytes()); 

        RAF.close();

您对在开头添加文本或按原样解析文本文件并提取元素有什么建议吗?

谢谢,

【问题讨论】:

  • 显示您的代码。

标签: java xml file parsing


【解决方案1】:

如果您知道条目的确切模式并且如果该模式没有改变,那么使用正则表达式提取条目相对容易,例如:

"<log *level=\"([^\"]*)\" *id=\"([^\"])\" *> ..."

【讨论】:

  • 不错的建议@maraca,我会试试的。
  • 我对这个建议非常谨慎,因为通常正则表达式不适合 xml/html 并且经常提到这个著名的答案:stackoverflow.com/a/1732454/4785110
【解决方案2】:

您不能将文件内容获取为StringStream 或其他任何内容,然后将您的内容添加到开头吗?之后你仍然可以解析文档String/Streamwhatever

【讨论】:

  • 文件非常大,要取出内容以添加字符串,我认为不适合内存,因为我正在处理 Web 服务,我们可能会同时处理多个文件。这就是为什么我从我的解决方案中排除了这个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2015-05-23
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多