2

我们有大量的遗留配置文件,各种格式通常类似于 KEYWORD DATA KEYWORD DATA KEYWORD DATA。

数据本身的格式在每个配置文件中都是唯一的。

我们想做的是以某种方式定义文件数据格式,然后使用它来允许应用程序检查配置文件是否符合定义的文件格式。

我们曾考虑将它们定义为 BNF 并使用 YACC 或等效的,但令人讨厌的感觉是,必须使用 XML 来做这件事。

需要的是一种定义配置文件数据格式的方法,最好是 XML 格式,然后使用该文件将遗留文件转换为有效的 XML。将 XML 文件转换回旧文件格式的首选方法会很有用。

4

4 回答 4

2

对于转换 XML->legacy 文件,XSLT可能会正常工作。

于 2009-02-09T12:03:24.033 回答
1

这正是明胶设计的问题类型。(另外,自我宣传警告。)

于 2010-01-19T22:38:06.370 回答
0

看看 Altova-Tools,尤其是 Mapforce。AFAIR 他们可以从/到用户文件格式转换,并且映射可以在屏幕上很自然地完成。(Altova Tools 也可以生成 XSD 进行检查。)

于 2009-02-09T11:36:18.340 回答
-1

尝试使用像 awk(或 gawk)这样的简单文本处理器来生成 XML。图案看起来像这样。

BEGIN { 
    print "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    print "<config-type>"; 
}
 { print "    <" $1 ">" $2 "</" $1 ">"; }
END { print "</config-type>"; }

确保编码正确。对于英文的配置文件,“ASCII”就足够了。

之后,您可以使用多种工具来处理该 XML。我建议使用这种格式,因为它最容易创建和处理:

<config-type>
    <KEYWORD1>DATA1</KEYWORD1>
    <KEYWORD2>DATA2</KEYWORD2>
    <KEYWORD3>DATA3</KEYWORD3>
</config-type>

为您拥有的每种类型的配置文件使用不同的“config-type”名称,以便于区分。

要检查 XML 的格式,最简单的方法是为其定义一个 DTD。许多 XML 编辑器可以读取现有的 XML 文件并为其创建 DTD。该DTD 并不完美,但它将是一个非常好的起点。

然后,您可以在 XML 标头中指定 DTD 的名称,并告诉 XML 解析器验证结构(但不是数据)。

要检查数据,您可以使用 XML 模式,但 XML 模式非常复杂,而且常常是矫枉过正。

于 2009-02-09T13:14:02.240 回答