Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将配置文件转换为XML_Xml_Converter - Fatal编程技术网

将配置文件转换为XML

将配置文件转换为XML,xml,converter,Xml,Converter,我们有大量的遗留配置文件,其格式多种多样,通常类似于关键字数据 数据本身的格式在每个配置文件中都是唯一的 我们想做的是以某种方式定义文件数据格式,然后使用它允许应用程序根据定义的文件格式检查配置文件 我们曾考虑过将它们定义为BNF并使用YACC或其等价物,但令人不安的是,使用XML做这件事肯定还有一段路要走 需要一种方法来定义配置文件数据格式(最好是XML格式),然后使用该文件将遗留文件转换为有效的XML。最好采用一种将XML文件转换回传统文件格式的方法。看看Altova工具,尤其是Mapfor

我们有大量的遗留配置文件,其格式多种多样,通常类似于关键字数据

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

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

我们曾考虑过将它们定义为BNF并使用YACC或其等价物,但令人不安的是,使用XML做这件事肯定还有一段路要走


需要一种方法来定义配置文件数据格式(最好是XML格式),然后使用该文件将遗留文件转换为有效的XML。最好采用一种将XML文件转换回传统文件格式的方法。

看看Altova工具,尤其是Mapforce。AFAIR可以从/转换为用户文件格式,映射可以在屏幕上非常自然地完成。(Altova工具还可以生成XSD以进行检查。)

对于转换XML->遗留文件,可能可以正常工作。

尝试使用简单的文本处理器,如awk(或gawk)来生成XML。图案应该是这样的

BEGIN { 
    print "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    print "<config-type>"; 
}
 { print "    <" $1 ">" $2 "</" $1 ">"; }
END { print "</config-type>"; }
开始{
打印“”;
打印“”;
}
{打印“$2”;}
结束{打印“”;}
确保编码正确。对于英文的配置文件,“ASCII”就足够了

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

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

数据1
数据2
数据3
为每种类型的配置文件使用不同的“配置类型”名称,以便易于区分

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

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


要检查数据,您可以使用XML模式,但XML模式非常复杂,而且通常是一种过度使用。

这正是设计用于检查的问题类型。(还有,自我提升警告。)

您目前在开发中使用的语言是什么?举一两个实际遗留文件的例子会有所帮助。关键词和数据真的都在一行吗,还是这只是StackOverflow重新格式化了文本?这也是您希望xml看起来如何的一个示例。我不认为xml模式太过了。特别是当您想认真对待XML.lol时,它是必需的。我不能不注意到您并不反对“非常复杂”;)