XML 与逗号分隔的文本文件

2024-04-03

好吧,我读了几本关于 XML 的书,并编写了程序来吐出它,等等。但问题是这样的。逗号分隔文件和 XML 文件都是“人类可读的”。但总的来说,逗号分隔文件比 XML 文件更容易被我看到;标签通常占用与数据一样多的空间(甚至更多)。这似乎掩盖了我正在阅读的内容,并且该格式可以使用一页来包含与逗号分隔文件中的单行文本中包含的相同信息。逗号分隔的文件解析起来要简单得多。所以真正的问题是为什么选择 XML?仅仅因为所有很酷的孩子都这样做?


优点

与 CSV 相比,XML 具有许多优点:

  • 分层数据组织
  • 自动数据验证(XML 模式或 DTD)
  • 轻松转换格式(使用 XSL)
  • 易于识别关系结构
  • 可与 XML-RPC 结合使用
  • 适用于对象持久化(编组)
  • 简化企业对企业的沟通
  • 有用的相关技术(XPath、DOM)
  • 与现代 Web 浏览器紧密集成
  • 提取、转换和加载 (ETL) 工具
  • 向后文件格式兼容性(版本属性)
  • 数字签名

这完全取决于问题领域和您要解决的问题。

Example

最后一项是很多人在编写网页时都会忽略的内容。考虑一下您拥有大量歌曲数据存储的情况。歌曲有艺术家、专辑、每分钟节拍等等。您可以将数据导出为 XML,编写一个简单的样式表将 XML 呈现为 XHTML,然后将浏览器指向 XML 页面。浏览器会将 XML 呈现为网页。

使用 CSV 无法做到这一点。

缺点

乔尔·斯波尔斯基有一篇很棒的文章 http://www.joelonsoftware.com/articles/fog0000000319.html为什么 XML 作为复杂的数据存储不是一个糟糕的选择:它很慢。 (与可以使用单个 CPU 指令检索上一条或下一条记录的数据库不同,遍历 XML 文档中的记录要慢得多。)可以说,这可以被视为优化问题,可以通过以下方式解决:等待18个月 http://en.wikipedia.org/wiki/Moore%27s_law. Thus:

  • 解析速度比其他格式慢
  • 语法冗余会降低可读性
  • 文档膨胀可能会影响存储成本
  • 无法轻松地对重叠(非分层)数据结构进行建模
  • 设计不良的 XML 文件格式并不罕见(根据我的经验;需要引用)

相关问题

也可以看看:为什么我应该使用人类可读的文件格式 https://stackoverflow.com/questions/568671/why-should-i-use-a-human-readable-file-format.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML 与逗号分隔的文本文件 的相关文章

  • jQuery:评估 ajax 响应中的脚本

    来自我的 web 应用程序的 XML 响应既有要添加到页面的 HTML 也有要运行的脚本 我正在尝试从我的网络应用程序发回 XML 例如
  • 在Python中解析Google Earth KML文件(lxml,命名空间)

    我正在尝试解析 kml https developers google com kml documentation 使用 xml 模块将文件导入到 Python 中 在 BeautifulSoup 中未能实现此功能 我将其用于 HTML 由
  • xml2 包 (R) 中的 xml_find_all 函数未找到相关节点

    我使用 R 中的 xml2 包来访问 xml 数据 发现它在不同的 xml documents 上表现不同 在这个宠物的例子中 library xml2 doc lt read xml
  • 将 CSV 文件读入 Java 作为数据库表

    我发现了很多关于使用 Java 读取 CSV 的帖子 并且他们所指向的 API 在读取 CSV 文件时都采用了面向行的方法 就像 当你得到一行时 获取每一列的值 我希望有一个更高级别的 API 比如在 Perl 中 DBI 允许您在 CSV
  • Android 中的 XmlPullParser 陷入困境

    经过多个小时的搜索和调试后 我仍然停留在同一个地方 并且 Eclipse 没有帮助我 我试图解析这个 RSS 提要 http fr espnf1 com rss motorsport story feeds 0 xml type 2 这很简
  • php简单xml如何读取具有不同子节点级别的多个节点

    我有一个 xml 文件 其中包含不同的命名节点和多级子节点 每个节点之间都不同 我应该如何访问数据 需要很多嵌套的for循环吗 以下是 xml 代码示例
  • XDocument.Save() 删除我的 实体

    我编写了一个工具来使用 C 和 Linq to XML 修复一些 XML 文件 即插入一些缺失的属性 值 该工具将现有 XML 文件加载到 XDocument 对象中 然后 它向下解析节点以插入丢失的数据 之后 它调用 XDocument
  • 流畅的 NHibernate 和 XML 列

    我正在从头开始构建一个新站点 并正在考虑使用 Fluent NHibernate 作为我的 ORM 我认为它可以轻松处理所有事情 可能除了我的 XML 列 我从来没有使用 NHibernate 构建过网站 尽管我使用过 Hibernate
  • Android 简单 TextView 动画

    我有一个 TextView 我想倒计时 3 2 1 发生了事情 为了使其更有趣 我希望每个数字都以完全不透明开始 然后淡出至透明 有没有一种简单的方法可以做到这一点 尝试这样的事情 private void countDown final
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • 从 XML 构建树结构的速度很慢

    我正在将 XML 文档解析为我自己的结构 但对于大型输入来说构建它非常慢 是否有更好的方法来做到这一点 public static DomTree
  • ColdFusion:无效的 XML 控制字符(十六进制)

    我正在尝试使用创建一个 xml 对象
  • 如何通过 XElement 添加属性

    我有这个代码 XElement EcnAdminConf new XElement Type new XElement Connections new XElement Conn Conn SetAttributeValue Server
  • 使用 Python 解析 XML,解析外部 ENTITY 引用

    在我的 S1000D xml 中 它指定了一个带有对公共 URL 的引用的 DOCTYPE 该 URL 包含对包含所有有效字符实体的许多其他文件的引用 我使用 xml etree ElementTree 和 lxml 尝试解析它并得到解析错
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • jQuery - xpath 查找?

    如果您在 xml 中有下面的 xml 那么您会使用以下命令变得昏昏欲睡 xml find animal find dog find beagle text jQuery 中是否有类似的方法来使用 xpath xml xpathfind an
  • 将数据从 Google Drive 中的 CSV 文件导入到 Google Sheet

    我使用 SAS 每 24 小时生成两个 CSV 文件 我使用 bat 脚本将生成的 CSV 文件保存在 Google Drive 的文件夹中 CSV 文件被替换 因此文件夹中始终只有这两个文件 CSV 文件以 分隔 并且仅包含三列或四列 我
  • 读取多个 CSV 文件,并在文件开头跳过不同行数

    我必须阅读大约 300 个单独的 CSV 我已经成功使用循环和结构化 CSV 名称来自动化该过程 然而 每个 CSV 在开头都有 14 17 行垃圾 并且随机变化 因此在 read table 命令中硬编码 skip 参数将不起作用 每个
  • 使用父对象引用进行 XML 反序列化

    我有一个描述网站的 XML 文件 它由站点作为根节点组成 可以有页面 页面可以有按钮或文本框和对话框等对象 对话框也可以有对象 在相应的C 类中 全部派生自Element 当我反序列化 XML 时 如何才能引用正在构造的元素的父级 我被告知
  • 在 PHP 中验证约 400MB 的大型 XML 文件

    我有一个很大的 XML 文件 大约 400MB 在开始处理之前我需要确保它的格式正确 我尝试的第一件事是类似于下面的内容 这很棒 因为我可以找出 XML 是否格式不正确以及 XML 的哪些部分 不好 doc simplexml load s

随机推荐

  • 为什么OutputStream存在write(int b)方法? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 Java OutputStream write 接受整数但写入字节 https stackoverflow com questions 1407893 why java outputstrea
  • 我们如何检查表是否有索引?

    我们如何检查该表是否有索引 如果有如何找到表的特定列的索引 问候 库马尔 在 SQL Server Management Studio 中 您可以沿着树导航到您感兴趣的表并打开索引节点 双击该节点中的任何索引将打开属性对话框 其中将显示索引
  • 图像上沿折线/曲线的点的有序列表

    我有一些带有折线 多重曲线组合的图像 我的目标是恢复沿着这些折线 多重曲线的点的有序列表 使用 opencv ConnectedComponents 我可以隔离图像中的每条折线 曲线 然后尝试通过以下步骤获取有序的点序列 num label
  • With 函数中的多个对象表达式循环遍历所有工作表

    我有一个由两张表组成的 Excel 电子表格 Sheet1 and Sheet2 在每张纸上我都有一个Button 1 为了将此按钮移动到Range D9 E11 在两张表中 我使用以下 VBA 来引用解决方案here https stac
  • Angular 2 找不到我的功能模块中声明的组件

    我很难让模块在 Angular 2 中工作 我创造了a plunk http plnkr co edit gJup4zH7v4CoFNC8k5kZ p preview这说明了问题所在 在 plunk 中 您会看到我有 app module
  • 如何将文本附加到 d3.js 中的一行

    我正在尝试将文本附加到条形图上创建的线条中 问题是我可以看到文本元素已创建 但它没有显示在 svg 上的任何地方 我附加文本的代码部分 var line svg append line attr x1 function return x l
  • 是否可以在 Android 设备上运行容器?

    我是一名移动开发人员 最近擅长使用 docker 容器 我正在为我的研究生项目开发容器架构 该架构的模块之一需要在 Android 设备上运行 但我找不到有关如何在 Android 设备上运行容器的信息 它可以是一些简单的东西 比如用 py
  • 计算硬盘吞吐量

    我的应用程序创建了一个 2GB 文件 需要选择系统上速度最快且有足够空间的驱动器 我尝试通过创建文件 设置长度 然后按顺序向其中写入数据来计算吞吐量 如下所示 FileInfo file null var drives DriveInfo
  • PIL:将模式“I”的图像转换为“RGB”会产生全白图像

    据我所知 这个问题末尾的图像是模式 I 的 PNG 它代表 索引 我正在尝试创建一个缩略图 并使用 PIL 将其保存为 JPG 然而 我是否离开了mode独自一人 PIL 不会让我错误地调整它的大小unable to generate th
  • iloc 给出“IndexError:单个位置索引器超出范围”

    我正在尝试使用以下内容对一些信息进行编码以读入机器学习模型 import numpy as np import pandas as pd import matplotlib pyplot as py Dataset pd read csv
  • 当子模块存在时,Git diffing 在 Windows 上崩溃

    Using msysgit http code google com p msysgit 在窗户上 每当我这样做时git diff在具有一个或多个子模块的存储库上 命令提示符 以及 PowerShell 崩溃 这是已知的 但是有修复 解决方
  • AFNetworking 返回 NSCFData; registerHTTPOperationClass 的问题[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我是 AF
  • php sprintf() 包含外来字符?

    接缝就像 sprintf 有外来字符的问题 还是我做错了什么 看起来它在从字符串中删除像 这样的字符时有效 有必要吗 我希望以下几行能够正确对齐以生成报告 2011 11 27 A1823 Ref Leif 12 873 00 18 98
  • git clone,忽略目录

    我正在尝试在 WordPress 安装上测试一些东西 这样做时 我想快速复制该存储库 但是 上传目录 wp content uploads 很大 所以我想忽略它 注意 我不想一直 gitignore 这个目录 只是为了这个场景 基本上 我想
  • Bash 测试中的复合条件组[重复]

    这个问题在这里已经有答案了 我想在 Bash 中设置一些条件组if陈述 具体来说 我正在寻找类似以下内容的内容 if
  • 下载源代码时 AWS Codebuild 失败。消息:找不到参考

    当使用 git 标签作为源版本触发构建时 使用 AWS Codebuild 正常运行数月的 CI CD 管道突然开始失败 通过拉取请求 pr 触发的构建继续正常工作 任何帮助将非常感激 我在 CodeBuild 团队工作 我们已经回滚了可能
  • php ftp 建立多个目录

    这是我的 PHP 代码 它实际上工作得很好 newftpdir parent date Ymd YYYYMMDD newftpdir child ext folder username newftpdir newftpdir parent
  • FFMPEG:合并音频(.mp3)和单个图像将它们转换为视频

    我想合并 IMAGE AUDIO 并使用 FFMPEG 库将它们转换为视频 我成功编译了该库 并得到了 libfmpeg so 但是通过 java 代码执行 ffmpeg 命令时出现问题 这是我正在使用的命令 ffmpeg i image8
  • PHP 中多行注释内的多行注释

    PHP 返回 语法错误 这是否是使用多行注释的完全错误的方法 有时我需要注释掉一大块代码进行测试 而这个代码块包含数百行 并且里面有很多多行注释 注释掉这个大块的最佳方法是什么 除了暂时从文件中删除它之外 来自PHP手册 http php
  • XML 与逗号分隔的文本文件

    好吧 我读了几本关于 XML 的书 并编写了程序来吐出它 等等 但问题是这样的 逗号分隔文件和 XML 文件都是 人类可读的 但总的来说 逗号分隔文件比 XML 文件更容易被我看到 标签通常占用与数据一样多的空间 甚至更多 这似乎掩盖了我正