我想要一些我希望放入mySQL表的结构化数据的文本界面。目前使用下面的表示法是在文本中。
我正在尝试理解为什么使用XML - 基本上我的字段将在XML标记中而不是使用“自定义标记/结构”/ ** /, - 和|表示表和字段。
我有将代码放入mySQL并提取它的代码。我觉得有点像使用这种表示法的黑客。稍后,结构化数据文件将用于导入和导出数据,类似于导出书签时的Internet Explorer。
/*Table*/
-
Field 1 | Field 2 | Field 3
-
Field 1 | Field 2 | Field 3
使用自定义标记语言与XML相比有哪些设计注意事项?
答案 0 :(得分:2)
您应该使用XML,因为:
答案 1 :(得分:1)
为什么要发明自己的?有十几个lightweight markup languages。
编辑:@Luc M的答案非常好。通常,您(几乎)总是希望使用现有的解析器(如果有的话)。为什么重新发明轮子?如果您想要一种简单的格式,请使用CSV,YAML或JSON。但是XML没有任何问题,并且有很多可用的固态解析器。大多数雇主都在关注如何快速而廉价地获得高质量的软件,编写解析器很少有助于实现这一目标。答案 2 :(得分:1)
有什么考虑因素?
使用自己动手解决方案可以获得的好处:
解析时间:这只是你可能得到的东西。你很难打败像RapidXML这样的优化解析器来读取数据。但是,您的解析器将能够直接解析到您的数据结构中,而使用基于语言的轻量级解决方案,您必须遍历它发出的数据结构以生成真实数据。
请注意,预先制作的解决方案仍有可能超过您的解决方案,因为编写优化的解析器很困难。虽然总会有Boost.Spirit帮助你。
对于自己动手的解决方案来说,这真的是我能想到的全部优势。如果这是您将从用户那里获得的数据,那么使用自制解决方案进行错误报告可能会有优势。但是你谈论的是你将生成和消费的数据;没有手工编辑的期望,因此错误报告不会成为一个重要问题。
您从XML或其他轻量级语言解决方案中获得的东西几乎都被其他人解决。
答案 3 :(得分:1)
3个理由:
(a)XML规范已经过仔细编写,没有关于什么是允许的和不允许的含糊不清。本土规格从未如此彻底(我见过数百个,相信我)所以你将永远争论一个特定的信息是否有效。
(b)有各种各样的符合要求和高性能的XML解析器 - 您永远不必担心编写和测试自己的解析器。 (根据我的经验,本土语言的解析器通常在投入生产之前会对大约5条测试消息进行测试,结果不可避免。)
(c)围绕XML的整个生态系统 - 创作工具,验证器,编程语言API,安全性,规范化,您可以命名;加上技能和知识,使一切运作。
话虽如此,对于非常简单的数据,可能有其他格式同样有效,例如Java属性文件。但我会避开CSV - 有许多不同的口味,而且没有一个是正确指定的。