9

最近我所在的研究小组一直在研究一些模拟代码。

对于代码,我们有包含代码的主要 C++ 文件,一个包含模拟输入参数的文本文件。每个时间步的模拟数据以柱状数据的形式吐出,每一列代表一些物理量位置、压力等,每一行代表一个网格点。

我的老板现在要求我将输入参数文件和输出数据文件的数据格式从目前的 key-value , key-value 性质切换为 XML 格式。他的解释似乎很差,因为他的英语很烂。已经有两次,他在我一个字都听不懂的情况下大肆宣扬 XML 的优越性。

现在,让我说我只是对科学计算感兴趣的普通 C/C++/Python 程序员,而且我没有计算机工程学科的背景,比如数据库或 XML 似乎最常用的 Web 开发。

谁能给我一个简短的解释,或者给我一些资源,这些资源通过简单但不平凡的例子对概念进行了温和的解释,没有所有的瑜伽、诵经、焚香和丑陋的技术词汇(这一直需要我做无休止的谷歌搜索)所有的 XML 教程似乎都充满了。

如果有人可以给出一些明确的真实示例,说明 XML 数据格式在某些 应用数学代码中的使用位置和方式,那将非常有帮助。

4

5 回答 5

6

简而言之,XML 提供了与多种软件互操作的能力,因为可以使用 XML 语言交换 XML 数据。

例如,相同的数据可以包含在 HTML 页面中进行显示,或者可以由其他知道数据模式(XML 模式)的应用程序“按原样”读取,或者可以使用 XSLT 转换为任何文本格式。(即 XML 到 CSV)。

总之,XML 可以比任何其他数据格式更容易移植。

当然,这不是将 XML 用于数据的唯一好处:XML 可以根据其模式验证文档(为了正确性),可以使用声明语言 (XPath) 查询数据。

对于需要/产生大量数据的应用程序,XML 的一个缺点是 XML 很冗长(任何二进制数据格式):想想如何以 XML 格式保存图像……那会很麻烦……当然,您可以在 XML 文档中包含二进制数据(通过使用 base64 编码),但在这种情况下(大部分数据存储在 base64 中),使用 XML 毫无意义。

于 2012-05-27T20:57:32.570 回答
4

此外,XML 是一种非常灵活的格式。借助 DTD、XSD 或 RelaxNG,可以轻松存储结构各异的数据,同时保持清晰、正式的定义。

例如,与表格相比,它允许您消除可能的空单元格,这(对于足够大的数据集)甚至可以弥补其冗长。

表格数据:

 ID  | attribute1 | attribute2 | attribute3 | attribute4 | attribute5 | etc.
 1   |     1      |     3      |      8     |    null    |    7       |  ...
 2   |     4      |    null    |     null   |    null    |    13      |  ...
 3   |     4      |    null    |      1     |     12     |   null     |  ...

XML:

<rows>
  <row id="1">
    <attribute1>1</attribute1>
    <attribute2>3</attribute2>
    <attribute3>8</attribute3>
    <attribute5>7</attribute5>
  </row>
  <row id="2">
    <attribute1>4</attribute1>
    <attribute5>13</attribute5>
  </row>
  <row id="3">
    <attribute1>4</attribute1>
    <attribute3>1</attribute3>
    <attribute4>12</attribute4>
  </row>
</rows>

更不用说每一行都可能有一个复杂的、单独的结构。你可以用这种方式描述一个很长的多项式表达式或任何其他函数。

我确信许多实现高等数学的应用程序都使用 XML。我知道 Mathematica 允许 XML 导出。Matlab 和 R 也是如此。

使用 XML 的另一个优点是它既易于机器解析,又易于人类阅读。您不需要对其进行解码(如二进制),并且可以清楚地看到数据的结构(与 csv 或许多其他格式不同)。

它的受欢迎程度和丰富的工具也不容忽视。

于 2012-05-27T21:32:39.263 回答
2

使用 XML 可以最大限度地提高数据的长期价值,因为它以一种独立于您打算如何使用它并且独立于任何特定软件环境的形式表示。基本上就是这样。通常,当您将软件和数据视为长期资产时,您可能需要在满足近期短期目标方面进行一些“过度设计”,但您(或您的老板)正在采取计算出的赌注是投资将在长期内得到回报。

于 2012-05-28T07:40:48.687 回答
1

想象一个任何软件或硬件都使用自己的格式的世界。Microsoft Word '.doc' 文件具有一定的结构(用于定义字体、尺寸、对齐方式、ecc),例如与'.pdf' 不同。

我可以无限地继续,告诉你一些格式与其他格式不同,但它们的结果(文本文件、视频、图像)与其他格式完全一样。互联网上充斥着人们询问“如何在该操作系统中打开该文件?”的问题。或“我如何在该应用程序中打开该文件”,ecc。

软件公司从来没有真正想让他们的软件适应现有标准,而是通过创建新标准(通常与其他标准不兼容)将这种痛苦留给您。**有一个例外:HTML。

任何浏览器开发人员都必须制作一个必须更好、更轻、更酷的应用程序才能做到这一点?只需读取并呈现现有格式:HTML 页面。

话虽如此,您可能会猜到为什么 XML 是一种好用的格式;) 理想情况下,所有内容都应仅采用 .txt 格式。现在告诉我,你能在没有 XML 编辑器的情况下编写一个 XML 文件吗(只使用记事本)?你能用pdf做同样的事情吗?还是有医生?

据我所知,没有“在某些应用数学代码中使用 XML 数据格式的位置和方式的明确现实示例”,但不幸的是,计算机科学不仅与“应用数学”有关,而且与一些小废话有关我们必须关心,比如格式。

于 2012-05-27T21:11:01.250 回答
0

XML不适用于数据结构或键值对。对这些使用 JSON 或 YAML。另一方面,XML 适用于文档标记。

于 2013-08-08T16:28:20.457 回答