Seth Kenlon 发布的文章

用 Linux 的 du 命令了解你正在使用多少磁盘空间。

 title=

无论你有多少存储空间,它总有可能被填满。在大多数个人设备上,磁盘被照片、视频和音乐填满,但在服务器上,由于用户账户和日志文件数据,空间减少是很正常的。无论你是负责管理一个多用户系统,还是只负责自己的笔记本电脑,你都可以用 du 命令检查磁盘的使用情况。

默认情况下,du 列出了当前目录中使用的磁盘空间,以及每个子目录的大小。

$ du
12 ./.backups
60 .

在这个例子中,当前目录总共占用了 60KB,其中 12KB 被子目录 .backups 占用。

如果你觉得这很混乱,并希望分别看到所有的大小,你可以使用 --separate-dirs(或简写 -S)选项:

$ du --separate-dirs
12 ./.backups
48 .

显示相同的信息(48KB 加 12KB 是 60KB),但每个目录被独立处理。

如需看到更多的细节,可以使用 --all(简写 -a)选项,它显示每个目录中以及每个文件:

$ du --separate-dirs --all        
4    ./example.adoc
28   ./graphic.png
4    ./.backups/example.adoc~
12   ./.backups
4    ./index.html
4    ./index.adoc
48   .

查看文件的修改时间

当查看文件以找出占用空间的内容时,查看文件最后一次被修改的时间是很有用的。一年内没有使用过的文件可以考虑归档,特别是当你的空间快用完时。

通过 du 查看文件的修改时间,使用 --time 选项:

$ du --separate-dirs --all --time
28   2021-07-21 11:12    ./graphic.png
4    2021-07-03 10:43    ./example.adoc
4    2021-07-13 13:03    ./index.html
4    2021-07-23 14:18    ./index.adoc
48   2021-07-23 14:19    .

为文件大小设置一个阈值

当为了磁盘空间而查看文件时,你可能只关心较大的文件。你可以通过 --threshold(简写 -t)选项为文件大小设置一个阈值。例如,只查看大于 1GB 的文件:

$ \du --separate-dirs --all --time --threshold=1G ~/Footage/
1839008 2021-07-14 13:55    /home/tux/Footage/snowfall.mp4
1577980 2020-04-11 13:10    /home/tux/Footage/waterfall.mp4
8588936 2021-07-14 13:55    /home/tux/Footage/

当文件较大时,它们可能难以阅读。使用 --human-readable(简写 -h)选项可以使文件大小更容易阅读:

$ du --separate-dirs --all --time --threshold=1G --human-readable ~/Footage/
1.8G 2021-07-14 13:55    /home/tux/Footage/snowfall.mp4
1.6G 2020-04-11 13:10    /home/tux/Footage/waterfall.mp4
8.5G 2021-07-14 13:55    /home/tux/Footage/

查看可用磁盘空间

如需获得一个驱动器上可用磁盘空间的摘要,请阅读我们关于 df 命令的文章。


via: https://opensource.com/article/21/7/check-disk-space-linux-du

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

每种编程语言处理文件数据的方式不尽相同,Python 是这么干的。

 title=

有些数据是临时的,它们在应用程序运行时存储在内存中,然后丢弃。但是有些数据是持久的。它们存储在硬盘驱动器上供以后使用,而且它们通常是用户最关心的东西。对于程序员来说,编写代码读写文件是很常见的,但每种语言处理该任务的方式都不同。本文演示了如何使用 Python 处理文件数据。

安装 Python

在 Linux 上,你可能已经安装了 Python。如果没有,你可以通过发行版软件仓库安装它。例如,在 CentOS 或 RHEL 上:

$ sudo dnf install python3

在 macOS 上,你可以使用 MacPortsHomebrew 安装。在 Windows 上,你可以使用 Chocolatey 安装。

一旦安装了 Python,打开你最喜欢的文本编辑器,准备好写代码吧。

使用 Python 向文件中写入数据

如果你需要向一个文件中写入数据,记住有三个步骤:

  1. 打开
  2. 写入
  3. 关闭

这与你在计算机上编码、编辑照片或执行其他操作时使用的步骤完全相同。首先,打开要编辑的文档,然后进行编辑,最后关闭文档。

在 Python 中,过程是这样的:

f = open('example.txt', 'w')
f.write('hello world')
f.close()

这个例子中,第一行以模式打开了一个文件,然后用变量 f 表示,我使用了 f 是因为它在 Python 代码中很常见,使用其他任意有效变量名也能正常工作。

在打开文件时,有不同的模式:

  • w 代表写入
  • r+ 代表可读可写
  • a 表示追加

第二行表示向文件中写入数据,本例写入的是纯文本,但你可以写入任意类型的数据。

最后一行关闭了文件。

使用 with 语法写入数据

对于快速的文件交互,常用有一种简短的方法可以写入数据。它不会使文件保持打开状态,所以你不必记得调用 close() 函数。相反,它使用 with 语法:

with open('example.txt', 'a') as f:
    f.write('hello open source')

使用 Python 读取数据

如果你或你的用户需要通过应用程序需要向文件中写入一些数据,然后你需要使用它们,那么你就需要读取文件了。与写入类似,逻辑一样:

  1. 打开
  2. 读取
  3. 关闭

同样的,这个逻辑反映了你一开始使用计算机就已知的内容。阅读文档,你可以打开、阅读,然后关闭。在计算机术语中,“打开”文件意味着将其加载到内存中。

实际上,一个文本文件内容肯定不止一行。例如,你需要读取一个配置文件、游戏存档或乐队下一首歌曲的歌词,正如你打开一本实体书时,你不可能立刻读完整本书,代码也只能解析已经加载到内存中的文件。因此,你可能需要遍历文件的内容。

f = open('example.tmp', 'r')

for line in f:
    print(line)

f.close()

示例的第一行指明使用 模式打开一个文件,然后文件交由变量 f 表示,但就像你写数据一样,变量名是任意的。f 并没有什么特殊的,它只是单词 “file” 的最简表示,所以 Python 程序员会经常使用它。

在第二行,我们使用了 line,另一个任意变量名,用来表示 f 的每一行。这告诉 Python 逐行迭代文件的内容,并将每一行的内容打印到输出中(在本例中为终端或 IDLE)。

使用 with 语法读取数据

就像写入一样,使用 with 语法是一种更简短的方法读取数据。即不需要调用 close() 方法,方便地快速交互。

with open('example.txt', 'r') as f:
    for line in f:
        print(line)

文件和 Python

使用 Python 有很多方法向文件写入数据,包括用 JSON、YAML、TOML 等不同的格式写入。还有一个非常好的内置方法用于创建和维护 SQLite 数据库,以及许多库来处理不同的文件格式,包括 图像、音频和视频等。


via: https://opensource.com/article/21/7/read-write-files-python

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

利用 df 命令查看 Linux 磁盘还剩多少空间。

 title=

磁盘空间已经不像计算机早期那样珍贵,但无论你有多少磁盘空间,总有耗尽的可能。计算机需要一些磁盘空间才能启动运行,所以为了确保你没有在无意间用尽了所有的硬盘空间,偶尔检查一下是非常必要的。在 Linux 终端,你可以用 df 命令来做这件事。

df 命令可以显示文件系统中可用的磁盘空间。

要想使输出结果易于阅读,你可以加上 --human-readable(或其简写 -h)选项:

$ df --human-readable
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       1.0T  525G  500G  52% /

在这个例子中,计算机的磁盘已经用了 52%,还有 500 GB 可用空间。

由于 Linux 从整体上看待所有挂载设备的文件系统,df 命令会展示出连接到计算机上的每个存储设备的详细信息。如果你有很多磁盘,那么输出结果将会反映出来:

$ df --human-readable
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       110G   45G   61G  43% /
devtmpfs         12G     0   12G   0% /dev
tmpfs            12G  848K   12G   1% /run
/dev/sda1       1.6T  1.3T  191G  87% /home
/dev/sdb1       917G  184G  687G  22% /penguin
/dev/sdc1        57G   50G  4.5G  92% /sneaker
/dev/sdd1       3.7T  2.4T  1.3T  65% /tux

在这个例子中,计算机的 /home 目录已经用了 87%,剩下 191 GB 的可用空间。

查看总的可用磁盘空间

如果你的文件系统确实很复杂,而你希望看到所有磁盘的总空间,可以使用 --total 选项:

$ df --human-readable --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       110G   45G   61G  43% /
devtmpfs         12G     0   12G   0% /dev
tmpfs            12G  848K   12G   1% /run
/dev/sda1       1.6T  1.3T  191G  87% /home
/dev/sdb1       917G  184G  687G  22% /penguin
/dev/sdc1        57G   50G  4.5G  92% /sneaker
/dev/sdd1       3.7T  2.4T  1.3T  65% /tux
total           6.6T  4.0T  2.5T  62% -

输出的最后一行展示了文件系统的总空间、已用总空间、可用总空间。

查看磁盘空间使用情况

如果你想大概了解哪些文件占用了磁盘空间,请阅读我们关于 du 命令 的文章。


via: https://opensource.com/article/21/7/check-disk-space-linux-df

作者:Seth Kenlon 选题:lujun9972 译者:piaoshi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

cron 定时器是一个可以按照计划自动运行命令的工具。

 title=

cron 定时器是一个可以按照计划自动运行命令的工具。定时器作业称为 cronjob,创建于 crontab 文件中。这是用户自动操作电脑的最简单也是最古老的方法。

创建一个 cronjob

要创建一个 cronjob,你可以使用 crontab 命令,并添加 -e 选项:

$ crontab -e

这将使用默认的文本编辑器打开 crontab。如需指定文本编辑器,请使用 EDITOR 环境变量

$ EDITOR=nano crontab -e

Cron 语法

如需调度一个 cronjob,你需要提供给计算机你想要执行的命令,然后提供一个 cron 表达式。cron 表达式在命令调度时运行:

  • 分钟(0 到 59)
  • 小时(0 到 23, 0 代表午夜执行)
  • 日期(1 到 31)
  • 月份(1 到 12)
  • 星期(0 到 6, 星期天是 0)

星号 (*) 代表的是“每一个”。例如,下面的表达式在每月每日每小时的 0 分钟运行备份脚本:

/opt/backup.sh 0 * * * *

下面的表达式在周日的凌晨 3:30 运行备份脚本:

/opt/backup.sh 30 3 * * 0

简写语法

现代的 cron 支持简化的宏,而不是 cron 表达式:

  • @hourly 在每天的每小时的 0 分运行
  • @daily 在每天的 0 时 0 分运行
  • @weekly 在周日的 0 时 0 分运行
  • @monthly 在每月的第一天的 0 时 0 分运行

例如,下面的 crontab 命令在每天的 0 时运行备份脚本:

/opt/backup.sh @daily

如何停止一个 cronjob

一旦你开始了一个 cronjob,它就会永远按照计划运行。想要在启动后停止 cronjob,你必须编辑 crontab,删除触发该作业的命令行,然后保存文件。

$ EDITOR=nano crontab -e

如需停止一个正在运行的作业,可以 使用标准的 Linux 进程命令 来停止一个正在运行的进程。

它是自动的

一旦你编写完 crontab,保存了文件并且退出了编辑器。你的 cronjob 就已经被调度了,剩下的工作都交给 cron 完成。


via: https://opensource.com/article/21/7/cron-linux

作者:Seth Kenlon 选题:lujun9972 译者:perfiffer 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

借助终端上的 XML 工具包 XMLStarlet,你就是 XML 之星。

 title=

学习解析 XML 通常被认为是一件复杂的事情,但它不一定是这样。XML 是高度严格结构化的,所以也是相对来说可预测的。也有许多其他工具可以帮助你使这项工作易于管理。

我最喜欢的 XML 实用程序之一是 XMLStarlet,这是一个用于终端的 XML 工具包,借助这个 XML 工具包,你可以验证、解析、编辑、格式化和转换 XML 数据。XMLStarLet 是个相对较小的命令,但浏览 XML 却充满潜力,因此本文演示了如何使用它来查询 XML 数据。

安装

XMLStarLet 默认安装在 CentOS、Fedora,和许多其他现代 Linux 发行版上,所以你可以打开终端,输入 xmlstarlet 来访问它。如果 XMLStarLet 还没有被安装,你的操作系统则会为你安装它。

或者,你可以用包管理器安装 xmlstarlet

$ sudo dnf install xmlstarlet

在 macOS 上,可以使用 MacPortsHomebrew。在 Windows 上,可以使用 Chocolatey

如果都失败了,你可以从 Sourceforge 上的源代码 手动安装它。

用 XMLStarlet 解析 XML

有许多工具可以帮助解析和转换 XML 数据,包括允许你 编写自己的解析器 的软件库,和复杂的命令,如 fopxsltproc。不过有时你不需要处理 XML 数据;你只需要一个方便的方法从 XML 数据中来提取、更新或验证重要数据。对于随手的 XML 交互,我使用 xmlstarlet,这是常见的处理 XML任务的一个典型的“瑞士军刀”式应用。通过运行 --help 命令,你可以看到它提供哪些选项:

$ xmlstarlet --help
Usage: xmlstarlet [<options>] <command> [<cmd-options>]
where <command> is one of:
  ed    (or edit)      - Edit/Update XML document(s)
  sel   (or select)    - Select data or query XML document(s) (XPATH, etc)
  tr    (or transform) - Transform XML document(s) using XSLT
  val   (or validate)  - Validate XML document(s) (well-formed/DTD/XSD/RelaxNG)
  fo    (or format)    - Format XML document(s)
  el    (or elements)  - Display element structure of XML document
  c14n  (or canonic)   - XML canonicalization
  ls    (or list)      - List directory as XML
[...]

你可以通过在这些子命令的末尾附加 -help 来获得进一步的帮助:

$ xmlstarlet sel --help
  -Q or --quiet             - do not write anything to standard output.
  -C or --comp              - display generated XSLT
  -R or --root              - print root element &lt;xsl-select&gt;
  -T or --text              - output is text (default is XML)
  -I or --indent            - indent output
[...]

用 sel 命令选择数据

可以使用 xmlstarlet select(简称 sel)命令查看 XML 格式的数据。下面是一个简单的 XML 文档:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xml>
  <os>
   <linux>
    <distribution>
      <name>Fedora</name>
      <release>7</release>
      <codename>Moonshine</codename>
      <spins>
        <name>Live</name>
        <name>Fedora</name>
        <name>Everything</name>
      </spins>
    </distribution>

    <distribution>
      <name>Fedora Core</name>
      <release>6</release>
      <codename>Zod</codename>
      <spins></spins>
    </distribution>
   </linux>
  </os>    
</xml>

在 XML 文件中查找数据时,你的第一个任务是关注要探索的节点。如果知道节点的路径,请使用 -value of 选项指定完整路径。你越早浏览 文档对象模型(DOM)树,就可以看到更多信息:

$ xmlstarlet select --template \
  --value-of /xml/os/linux/distribution \
  --nl myfile.xml
      Fedora
      7
      Moonshine
     
        Live
        Fedora
        Everything     
     
      Fedora Core
      6
      Zod

--nl 代表“新的一行”,它插入大量的空白,以确保在输入结果后,终端在新的一行显示。我已经删除了样本输出中的一些多余空间。

通过进一步深入 DOM 树来凝聚关注点:

$ xmlstarlet select --template \
  --value-of /xml/os/linux/distribution/name \
  --nl myfile.xml
Fedora
Fedora Core

条件选择

用于导航和解析 XML 的最强大工具之一被称为 XPath。它规范了 XML 搜索中使用的语法,并从 XML 库调用函数。XMLStarlet 能够解析 XPath 表达式,因此可以使用 XPath 函数来有条件的进行选择。XPath 具有丰富的函数,由 W3C 提供了详细文档,但我觉得 Mozilla 的 XPath 文档 更简洁。

可以使用方括号作为测试函数,将元素的内容与某个值进行比较。下面是对 <name> 元素的值的测试,它仅返回与特定匹配相关联的版本号。

想象一下,示例 XML 文件包含以 1 开头的所有 Fedora 版本。要查看与旧名称 “Fedora Core” 关联的所有版本号(该项目从版本 7 开始删除了名称中的 “Core”),请执行以下操作:

$ xmlstarlet sel --template \
  --value-of '/xml/os/linux/distribution[name = "Fedora Core"]/release' \
  --nl myfile.xml
6
5
4
3
2
1

通过将路径的 --value-of 更改为 /xml/os/linux/distribution[name=“Fedora Core”]/codename,你便可以查看这些版本的所有代号。

匹配路径和获取目标值

将 XML 标记视为节点的一个好处是,一旦找到节点,就可以将其视为当前的数据的“目录”。它不是一个真正的目录,至少不是文件系统意义上的目录,但它是一个可以查询的数据集合。为了帮助你将目标和“里面”的数据分开,XMLStarlet 把你试图用 --match 选项匹配的内容和用 --value-of 选项匹配的数据值进行了区分。

假设你知道 <spin> 节点包含几个元素。这就是你的目标节点。一旦到了这里,就可以使用 --value-of 指定想要哪个元素的值。要查看所有元素,可以使用点(.)来代表当前位置:

$ xmlstarlet sel --template \
  --match '/xml/os/linux/distribution/spin' \
  --value-of '.' --nl myfile.xml \
Live
Fedora
Everything

与浏览 DOM 一样,可以使用 XPath 表达式来限制返回数据的范围。在本例中,我使用 last() 函数来检索 spin 节点中的最后一个元素:

$ xmlstarlet select --template \
  --match '/xml/os/linux/distribution/spin' \
  --value-of '*[last()]' --nl myfile.xml
Everything

在本例中,我使用 position() 函数选择 spin 节点中的特定元素:

$ xmlstarlet select --template \
  --match '/xml/os/linux/distribution/spin' \
  --value-of '*[position() = 2]' --nl myfile.xml
Fedora

--match--value 选项可以重叠,因此如何将它们一起使用取决于你自己。对于示例 XML,这两个表达式执行的是相同的操作:

$ xmlstarlet select  --template \
  --match '/xml/os/linux/distribution/spin' \
  --value-of '.' \
  --nl myfile.xml
Live
Fedora
Everything     

$ xmlstarlet select --template \
  --match '/xml/os/linux/distribution' \
  --value-of 'spin' \
  --nl myfile.xml
Live
Fedora
Everything

熟悉 XML

XML 有时看起来过于冗长和笨拙,但为与之交互和构建的工具却总是让我吃惊。如果你想要好好使用 XML,那么 XMLStarlet 可能是一个很好的切入点。下次要打开 XML 文件查看其结构化数据时,请尝试使用 XMLStarlet,看看是否可以查询这些数据。当你对 XML 越熟悉时,它就越能作为一种健壮灵活的数据格式而为你服务。


via: https://opensource.com/article/21/7/parse-xml-linux

作者:Seth Kenlon 选题:lujun9972 译者:zepoch 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

了解一下 XML 吧,它是一种严格但灵活的标记语言,无论是在文档还是图像方面应用都十分广泛。

 title=

XML 是一种分层的标记语言。它使用打开和关闭标签来定义数据,它常用来存储和交换数据,而且由于它极大的灵活性,不论是在 文档 还是 图像 中都用的非常多。

这里是一个 XML 文档的例子:

<xml>
  <os>
   <linux>
    <distribution>
      <name>Fedora</name>
      <release>8</release>
      <codename>Werewolf</codename>
    </distribution>

    <distribution>
      <name>Slackware</name>
      <release>12.1</release>
      <mascot>
        <official>Tux</official>
        <unofficial>Bob Dobbs</unofficial>
      </mascot>
    </distribution>
   </linux>
  </os>    
</xml>

阅读这个示例 XML,你可能会发现这个 XML 的格式具有直观的特性。 无论你是否熟悉这个文档的主题,你都可能理解本文档中的数据。 这部分原因是因为 XML 被认为是冗长的。 它使用了很多标签,标签可以有很长的描述性名称,并且数据以分层的方式排序,这有助于解释数据之间的关系。 你可能从这个示例中了解到 Fedora 发行版和 Slackware 发行版是两个不同且不相关的 Linux 发行版,因为每个实例都“包含”在自己独立的 <distribution> 标签中。

XML 也非常灵活。 与 HTML 不同,它没有预定义的标签列表。 你可以自由创建你需要表示任何数据结构的标签。

XML 的组成

数据的存在为了读取,当计算机“读取”数据时,该过程称为 解析。 再次使用示例 XML 数据,以下是大多数 XML 解析器认为重要的术语。

  • 文档<xml> 标签标记文档的开始, </xml> 标签标记文档的结束。
  • 节点<os><distribution><mascot> 这些都是节点,在解析术语中,节点是包含其他标签的标签。
  • 元素:像 <name>Fedora</name><official>Tux</official> 这些都是元素。从第一个<开始,到最后一个 > 结束是一个元素。
  • 内容:在两个元素标签之间的数据被称之为内容,在第一个 <name> 标签中,Fedora 字符串就是一个内容。

XML 模式

XML 文档中的标签和标签继承性称为 模式

一些模式是随意组成的(例如,本文中的示例 XML 代码纯粹是即兴创作的),而其他模式则由标准组织严格定义。 例如,可缩放矢量图形(SVG)模式 由 W3C 定义,而 DocBook 模式 由 Norman Walsh 定义。

模式强制执行一致性。 最基本的模式通常也是最严格的。 在我的示例 XML 代码中,将发行版名称放在 <mascot> 节点中是没有意义的,因为文档的隐含模式清楚地表明 mascot 必须是发行版的“子”元素。

数据对象模型(DOM)

如果你必须不断地描述标签和位置(例如,“系统部分中的 Linux 部分中第二个发行版标签的名称标签”),那么谈论 XML 会让人感到困惑,因此解析器使用文档对象模型(DOM)的概念来表示 XML 数据。 DOM 将 XML 数据放入一种“家谱”结构中,从根元素(在我的示例 XML 中,即 os 标记)开始并包括路径上的每个标记。

 title=

这种相同的 XML 数据结构可以表示为路径,就像 Linux 系统中的文件或互联网上网页的位置一样。 例如,<mascot> 标签的路径可以表示为 //os/linux/distribution/slackware/mascot

两个 <distribution> 标签可以被表示为 //os/linux/distribution ,因为这里有两个发行版的节点,因此一个解析器可以直接将两个节点的内容载入到一个数组中,可以进行查询。

严格的 XML

XML 也以严格而著称。 这意味着大多数应用程序被设计为在遇到 XML 错误时就会故意失败。 这听起来可能有问题,但这是开发人员最欣赏 XML 的事情之一,因为当应用程序试图猜测如何解决错误时,可能会发生不可预测的事情。 例如,在 HTML 定义明确之前,大多数 Web 浏览器都包含“怪癖模式”,因此当人们试图查看糟糕的 HTML 代码时,Web 浏览器却可以加载作者可能想要的内容。 结果非常难以预测,尤其是当一个浏览器的猜测与另一个浏览器不同时。

XML 通过在出现故意错误时失败而不允许这样做。 这让作者可以修复错误,直到它们生成有效的 XML。 因为 XML 是良好定义的,所以有许多应用程序的验证器插件以及像 xmllintxmlstarlet 这样的独立命令来帮助你及早定位错误。

转换 XML

因为 XML 通常用作数据交换,所以将 XML 转换为其他数据格式或其他 XML 模式是很常见的。 经典示例包括 XSLTProc、xmlto 和 pandoc,但从技术上讲,还有许多其他应用程序或者至少程序的一部分就是在转换 XML。

事实上,LibreOffice 使用 XML 来布局其文字处理器和电子表格文档,因此无论何时你导出或 从 LibreOffice 转换文件,你都在转换 XML。

开源 EPUB 格式的电子书 使用 XML,因此无论何时你 将文档转换为 EPUB 或从 EPUB 转换,你都在转换 XML。

Inkscape 是基于矢量的插图应用程序,它将其文件保存在 SVG 中,这是一种专为图形设计的 XML 模式。 任何时候你将 Inkscape 中的图像导出为 PNG 文件时,你都在转换 XML。

名单还可以一直继续下去。 XML 是一种数据存储格式,旨在确保你的数据,无论是画布上的点和线、图表上的节点,还是文档中的文字,都可以轻松准确地提取、更新和转换。

学习 XML

编写 XML 很像编写 HTML。 感谢 Jay Nick 的辛勤工作,在线提供免费且有趣的 XML 课程 可以教你如何使用 XML 创建图形。

通常,探索 XML 所需的特殊工具很少。 由于 HTML 和 XML 之间的密切关系,你可以 使用 Web 浏览器查看 XML。 此外,QXmlEditNetBeansKate 等开源文本编辑器通过有用的提示、自动完成、语法验证等,使键入和阅读 XML 变得容易。

选择 XML

XML 起初可能看起来有很多数据,但它与 HTML 并没有太大的不同(实际上,HTML 已经 以 XHTML 的形式重新实现为 XML)。 XML 有一个独特的好处,即构成其结构的标签也恰好是元数据,提供有关其存储内容的信息。 精心设计的 XML 模式包含并描述你的数据,使用户能够一目了然并快速解析它,并使开发人员能够使用一些库 快速解析


via: https://opensource.com/article/21/7/what-xml

作者:Seth Kenlon 选题:lujun9972 译者:amwps290 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出