使用自定义标记/结构化语言与XML的设计注意事项是什么

时间:2011-06-15 01:56:19

标签: xml

我想要一些我希望放入mySQL表的结构化数据的文本界面。目前使用下面的表示法是在文本中。

我正在尝试理解为什么使用XML - 基本上我的字段将在XML标记中而不是使用“自定义标记/结构”/ ** /, - 和|表示表和字段。

我有将代码放入mySQL并提取它的代码。我觉得有点像使用这种表示法的黑客。稍后,结构化数据文件将用于导入和导出数据,类似于导出书签时的Internet Explorer。

/*Table*/
-
Field 1 | Field 2 | Field 3
-
Field 1 | Field 2 | Field 3

使用自定义标记语言与XML相比有哪些设计注意事项?

4 个答案:

答案 0 :(得分:2)

您应该使用XML,因为:

  1. XML解析器已存在。你不必重新发明轮子。
  2. 如果您的某个字段包含分隔符,会发生什么情况?
  3. 您永远不知道应用程序的增长方式。 XML非常丰富且成熟,因此您无需考虑应用程序的未来。您可能会对自己的解析器感到头疼。
  4. 如果您不想使用XML,请考虑将TrueWill的答案作为替代方案。在开始自己编码之前做一些研究。

答案 1 :(得分:1)

为什么要发明自己的?有十几个lightweight markup languages

编辑:@Luc M的答案非常好。通常,您(几乎)总是希望使用现有的解析器(如果有的话)。为什么重新发明轮子?如果您想要一种简单的格式,请使用CSVYAMLJSON。但是XML没有任何问题,并且有很多可用的固态解析器。大多数雇主都在关注如何快速而廉价地获得高质量的软件,编写解析器很少有助于实现这一目标。

答案 2 :(得分:1)

有什么考虑因素?

使用自己动手解决方案可以获得的好处:

解析时间:这只是你可能得到的东西。你很难打败像RapidXML这样的优化解析器来读取数据。但是,您的解析器将能够直接解析到您的数据结构中,而使用基于语言的轻量级解决方案,您必须遍历它发出的数据结构以生成真实数据。

请注意,预先制作的解决方案仍有可能超过您的解决方案,因为编写优化的解析器很困难。虽然总会有Boost.Spirit帮助你。

对于自己动手的解决方案来说,这真的是我能想到的全部优势。如果这是您将从用户那里获得的数据,那么使用自制解决方案进行错误报告可能会有优势。但是你谈论的是你将生成和消费的数据;没有手工编辑的期望,因此错误报告不会成为一个重要问题。

您从XML或其他轻量级语言解决方案中获得的东西几乎都被其他人解决。

答案 3 :(得分:1)

3个理由:

(a)XML规范已经过仔细编写,没有关于什么是允许的和不允许的含糊不清。本土规格从未如此彻底(我见过数百个,相信我)所以你将永远争论一个特定的信息是否有效。

(b)有各种各样的符合要求和高性能的XML解析器 - 您永远不必担心编写和测试自己的解析器。 (根据我的经验,本土语言的解析器通常在投入生产之前会对大约5条测试消息进行测试,结果不可避免。)

(c)围绕XML的整个生态系统 - 创作工具,验证器,编程语言API,安全性,规范化,您可以命名;加上技能和知识,使一切运作。

话虽如此,对于非常简单的数据,可能有其他格式同样有效,例如Java属性文件。但我会避开CSV - 有许多不同的口味,而且没有一个是正确指定的。