gpt4 book ai didi

java - 从 "unstructured"纯文本中解析出 XML

转载 作者:行者123 更新时间:2023-12-01 11:57:40 31 4
gpt4 key购买 nike

我正在使用发布系统中的大型文本文件。其结构如下:

-- 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/

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