我正在使用发布系统中的大型文本文件。其结构如下:
-- File header
-- File Attribute 1
-- File Attribute 2
<xml>File summary</xml>
-- Record header
-- Record attribute 1
<xml>Record1</xml>
-- Record 1 header
-- Record attribute 1
<xml>Record1</xml>
-- Record 2 header
-- Record attribute 1
<xml>Record2</xml>
-- Record n header
-- Record attribute 1
<xml>Recordn</xml>
一个文件中可能有数十万条记录,并且 XML 是一个单行的大型结构。行的长度可以达到数千个字符。
首先,是的,这很疯狂 - 我的第一个任务是返回发布系统并解释 XML 的工作原理! ;) 同时,我需要一种剥离 XML 并构建结构化输出文件的方法:
<xml>
<header/>
<listofrecords>
<record1/>
<record2/>
<recordn/>
</listofrecords>
</xml>
请注意,我对文本标题内容不感兴趣。
我正在努力理解最快且最可维护的方法来做到这一点。
我的想法是使用 Java 和 BufferedReader 逐行解析输入文件。当我遇到 XML 标记时,我会读取结束 XML 标记并添加到输出文件结构中。
有没有更快的方法来做到这一点? RegEx 可以帮助识别我需要提取为新格式的文本吗?
抱歉,这是一个开放式问题,如果它不属于 Stack Overflow 的范围,我会理解。不过,任何想法都非常感谢
最佳答案
我会使用 perl 脚本
#! /usr/bin/perl
#
print "<xml>\n";
while($line = <>) {
if ($line =~ m!-- File (.*)!) {
print " <header $1/>\n";
print " <listofrecords>\n";
last;
}
}
while($line = <>) {
if($line =~ m!<xml>(.*)</xml!) {
print " <$1/>\n";
}
}
print " </listofrecords>\n";
print "</xml>";
关于java - 从 "unstructured"纯文本中解析出 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303570/