Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 - Fatal编程技术网

为什么XML适合数据文件?

为什么XML适合数据文件?,xml,Xml,最近,我所在的研究小组正在研究一些模拟代码 对于代码,我们有包含代码的主要C++文件, 包含模拟输入参数的文本文件。每个时间步的模拟数据以柱状数据的形式显示,其中每列表示一些物理量、位置、压力等,每行表示一个网格点 我的老板现在要求我将输入参数文件和输出数据文件的数据格式从当前的键值、键值性质转换为XML格式。他似乎是 他的解释很差,因为他的英语很差。现在已经有两次了,他在我一个字都不懂的情况下大肆宣扬XML的优越性 现在,让我说我只是你对科学计算感兴趣的普通C/C++/Python程序员,我在

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

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

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

现在,让我说我只是你对科学计算感兴趣的普通C/C++/Python程序员,我在计算机工程学科中没有后盾,比如数据库或Web开发,XML最常用的是. 有没有人能给我一个简短的解释,或者给我指出一些 通过简单但非琐碎的例子温和地解释这些概念,而不需要所有XML教程中似乎充斥的瑜伽、诵经、焚香和难看的技术词汇(这些词汇一直需要我做无休止的谷歌搜索)

如果有人能给出一些明确的实际例子,说明XML数据格式在某些应用程序中的使用位置和方式
应用数学非常有用的代码

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

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

总之,XML比任何其他数据格式都更易于移植

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


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

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

我可以无限地讲下去,告诉你一些格式与其他格式不同,但它们的结果(文本文件、视频、图像)与其他格式一样。互联网上有很多人问“我怎样才能在那个操作系统中打开那个文件?”或者“我怎样才能在那个应用程序中打开那个文件”,ecc

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

任何一个浏览器开发者都必须制作一个应用程序,它必须尽可能的更好、更轻、更酷,这样做什么?只需读取并呈现现有格式:HTML页面

说到这里,您可能会猜到为什么XML是一种很好的使用格式;) 理想情况下,所有内容都应为.txt格式。现在告诉我,您是否可以在不使用XML编辑器的情况下编写XML文件(仅使用记事本)?你能用pdf做同样的事情吗?还是和医生在一起


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

此外,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:


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

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

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


它的流行性和丰富的工具也不容忽视。

使用XML可以最大限度地提高数据的长期价值,因为它的表示形式与您打算如何使用它无关,也与任何特定的软件环境无关。基本上就是这样。通常,当您将软件和数据视为长期资产时,您可能需要在实现眼前的短期目标方面做一些“过度工程”,但您(或您的老板)正在进行一场有计划的赌博,以确保投资能够在长期内获得回报。

XML不适合用于数据结构或键值对。使用JSON或YAML处理这些问题。另一方面,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>