最近,我一直在研究的研究小组一直在研究一些模拟代码。
对于代码,我们有包含代码的主要C ++文件, 包含模拟输入参数的文本文件。每个时间步的模拟数据以柱状数据的形式出现,其中每列代表一些物理量位置,压力等,每行代表一个网格点。
我的老板现在要求我将输入参数文件和输出数据文件的数据格式从其当前键值,键值性质切换为XML格式。他似乎是 他的解释非常差,因为他的英语很糟糕。现在有两次,他在没有理解一个词的情况下大肆宣传XML的优势。
现在,让我说我只是对科学计算感兴趣的普通C / C ++ / Python程序员,而且我没有像数据库或Web开发这样的计算机工程科目的背景,而XML似乎最常用。< / p>
任何人都可以给我一个简短的解释,或者指出一些资源 通过简单但非平凡的例子提供一个温和的解释概念,没有所有的XML教程似乎都充满了瑜伽,吟唱,熏香和丑陋的技术词汇(这些都要求我做无休止的谷歌搜索)。 / p>
如果有人可以提供一些明确的实际示例,说明某些地方使用XML数据格式的位置和方式 应用数学代码非常有帮助。
答案 0 :(得分:6)
简而言之,XML提供了与各种软件互操作的能力,因为XML数据可以使用XML语言进行交换。
例如,相同的数据可以包含在HTML页面中以供显示,或者可以由其他知道数据模式(XML模式)的应用程序“按原样”读取,或者可以使用任何文本格式进行转换XSLT。 (即XML到CSV)。
总之,XML可以比任何其他数据格式更容易移植。
当然,这不是将XML用于数据的唯一好处:XML可以根据其模式验证文档(为了正确),可以使用声明语言(XPath)查询数据。
对于需要/生成大量数据的应用程序而言,XML的缺点是XML是冗长的(任何二进制数据格式):想想如何保存图像,例如,在XML中......这将是麻烦的。 ..当然,您可以在XML文档中包含二进制数据(通过使用base64编码),但在这种情况下(大多数数据存储在base64中),使用XML是没有意义的。
答案 1 :(得分: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或许多其他格式不同)。
它的受欢迎程度和丰富的工具也不容忽视。
答案 2 :(得分:2)
使用XML可以最大化数据的长期价值,因为它以一种独立于您打算如何使用它的形式表示,并且独立于任何特定的软件环境。基本上就是这样。通常,当您将软件和数据视为长期资产时,您可能需要在满足即时短期目标方面做一些“过度工程”,但您(或您的老板)正在采取计算赌博,投资将在长期内得到回报。
答案 3 :(得分:1)
考虑一个任何软件或硬件使用自己的格式的世界。 Microsoft Word“.doc”文件具有某种结构(用于定义字体,尺寸,对齐方式,ecc),与a'.pdf'不同。
我可以无限地继续,告诉你一些格式与其他格式不同,但结果(文本文件,视频,图像)就像其他格式一样。互联网几乎超载了人们要求“如何在该操作系统中打开该文件?”或“如何在该应用程序中打开该文件”,ecc。
软件公司从未真正想要将他们的软件改编为现有标准,而是通过创建新标准(通常与其他标准不兼容)将这些软件留给您。 **有一个例外:HTML。
任何浏览器开发者都必须制作一个应该更好,更轻,更酷的应用程序来做什么?只需阅读并呈现现有格式:HTML页面。
告诉你,你可能会猜到为什么XML是一种很好用的格式;) 理想情况下,一切都应该只有.txt格式。现在告诉我,你能不用XML编辑器编写一个XML文件(只需使用记事本)?你能用pdf做同样的事吗?或者使用doc?
据我所知,没有“在某些应用数学代码中使用XML数据格式的位置和方式的明确现实例子”,但不幸的是,计算机科学不仅仅是关于“应用数学”,而且关于我们必须关心的一些小问题,比如格式。
答案 4 :(得分:0)
XML 不适用于数据结构或键值对。使用JSON或YAML。另一方面,XML适用于文档标记。