我们有大量遗留配置文件,各种格式通常类似于KEYWORD DATA KEYWORD DATA KEYWORD DATA。
数据本身的格式在每个配置文件中都是唯一的。
我们想要做的是以某种方式定义文件数据格式,然后使用它来允许应用程序根据定义的文件格式检查配置文件。
我们已经考虑将它们定义为BNF并使用YACC或它的等价物,但是唠叨的感觉是必须使用XML来做这件事。
需要的是一种以XML格式定义配置文件数据格式的方法,然后使用该文件将旧文件转换为有效的XML。将XML文件转换回传统文件格式的优选方法将非常有用。
答案 0 :(得分:2)
对于转换XML->旧文件,XSLT可能会正常工作。
答案 1 :(得分:1)
这正是Gelatin设计的问题类型。 (另外,自我推销警告。)
答案 2 :(得分:0)
看看Altova-Tools,尤其是Mapforce。 AFAIR他们可以从/转换为用户文件格式,并且可以在屏幕上自然地完成映射。 (Altova Tools也可以生成XSD进行检查。)
答案 3 :(得分:-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架构非常复杂,而且通常会出现问题。