XML (.xml)

背景

    • MIME 类型:text/xml
    • XML 通用目的的标记语言和结构文档格式.
    • 主要用于计算机网络中不同系统间的数据交换.
    • 用一分层模型表示结构数据.
    • 以包括标记、属性和字符内容的基于树的结构存储数据.
    • 纯文本文件,一般编码为 UTF-8.
    • XML 是衍生自 Extensible Markup Language(可扩展标记语言)的缩写.
    • 是标准通用标记语言(SGML)的子集.
    • 自1996年由 XML Working Group 开发.
    • 于2001年作为 W3C 的标准建议 RFC 3076 发布.

Import 与 Export

  • 如果可能的话,Import["file.xml"] 对于基于 XML 的文件格式使用特殊的转换器,否则导入文件为通用的 XML 并返回一个 XMLObject 表达式.
  • XMLObject 表达式以符号形式将整个 XML 文档表示为 XMLElement 表达式树.
  • Import["file.xml","XML"] 总是导入为通用的 XML.
  • Import["file.xml",elements] 导入指定的元素.
  • 既然 XML 与 Wolfram 语言均以树结构表示数据,所以它们之间有一个自然的映射. Wolfram 语言以嵌套的 XMLElement 对象存储 XML 数据结构,以 XML 数据内嵌于一个 XMLObject 存储整个 XML 文档.
  • 默认情况下,Import 以字符串形式返回存储在 XML 的数值数据.
  • 导入格式可以由 Import["file","XML"]Import["file",{"XML",elem,}] 指定.
  • Import["file.html","XML"] 在导入前,把 HTML 转换成格式良好的 XML.
  • Export["file.xml",expr] 根据 expr 创建 XML 文件.
  • 支持的表达式 expr 包括:
  • XMLElement[]导出符号 XML 元素
    XMLObject[]导出符号 XML 对象
  • XMLObjectXMLElement 以外类型的表达式将导出为 ExpressionML.
  • Export["file.xml",expr, elem] 通过把 expr 作为指定参数 elem 创建一个 XML 文件.
  • Export["file.xml",{expr1,expr2,},{{elem1,elem2,}}] 把每一个 expri 指定为相应的 elemi
  • Export["file.xml",expr,opt1->val1,] 导出具有指定值的指定选项参数的 expr.
  • Export["file.xml",{elem1->expr1,elem2->expr2,},"Rules"] 使用规则指定要导出的参数.
  • 请到以下参考页面了解完整的基本信息:
  • Import, Export从文件导入或导出到文件
    CloudImport, CloudExport从云对象导入或导出到云对象
    ImportString, ExportString从字符串导入或导出到字符串
    ImportByteArray, ExportByteArray从字节数组导入或导出到字节数组

导入参数

  • Import 的通用参数:
  • "Elements" 该文件可用的参数和选项列表
    "Summary"文件摘要
    "Rules"所有可用参数的规则列表
  • 表示数据的参数:
  • "CDATA"以字符串列表表示的 CDATA 部分
    "Comments"以字符串列表表示的 XML 注释
    "EmbeddedDTD"嵌入文档类型定义 (DTD)
    "Plaintext"文件的纯文本表示
    "Tags"文件中存在的所有标记列表
    "XMLObject"作为符号式 XML 表达式的整个文档
    "XMLElement"嵌套的 XMLElement 对象
  • 默认情况下,Import 使用 "XMLObject" 参数.

选项

  • Import 的选项:
  • "AllowRemoteDTDAccess"True是否在网络中尝试获取外部的 DTD
    "AllowUnrecognizedEntities"Automatic是否允许解析 XML 文档中无法识别的实体
    "IncludeDefaultedAttributes"False是否对属性填充默认值
    "IncludeEmbeddedObjects"None要包括的("Comments""ProcessingInstructions")内嵌对象
    "IncludeNamespaces"Automatic是否返回完全合格的标记和属性名称
    "NormalizeWhitespace"True是否去除开头和结尾的空格并在字符数据中把连续的空格减少到一单个空格
    "PreserveCDATASections"False是否把字符数据部分保留为特殊对象
    "ReadDTD"True是否读取外部的 DTD
    "ValidateAgainstDTD"Automatic是否按指定的 DTD 验证文档
  • Export 的选项:
  • "AttributeQuoting""'"对于属性值指定分隔符
    "ElementFormatting"Automatic导出文档中长字符串的参数的缩进以及断行
    "Entities"None用名称实体取代字符的规则
    "NamespacePrefixes"{}命名空间的前缀命名,形式为 "namespace"->"prefix"

范例

打开所有单元关闭所有单元

基本范例  (3)

以符号式 XML 导入一个 XML 样本文件:

显示 XML 文件的摘要:

导出 XMLObject

范围  (1)

显示文件中可用的 Import 参数:

转换为纯文本:

获取样本文件中存在的所有 XML 标记列表:

导入元素  (7)

"CDATA"  (1)

导入所有 CDATA 部分的内容:

"Comments"  (1)

从 XML 文件导入评论:

"EmbeddedDTD"  (1)

导入 XML 文档中包含的 DTD:

"Plaintext"  (1)

导入纯文本:

"Tags"  (1)

导入文件中出现的所有标签:

"XMLObject"  (1)

将整个文档导入为符号 XML 表达式:

"XMLElement"  (1)

导入嵌套 XMLElement 对象:

导入的选项  (18)

"AllowRemoteDTDAccess"  (1)

默认情况下,Import 尝试通过网络获取外部 DTD:

禁用外部 DTD 的网络访问. 该文件没有外部 DTD,因此结果是相同的:

"AllowUnrecognizedEntities"  (3)

默认情况下,允许导入无法识别的实体并发出警告消息:

允许导入无法识别的实体,不发出警告消息:

不允许导入无法识别的实体:

"IncludeDefaultedAttributes"  (2)

默认情况下不包括属性的默认值:

包括属性的默认值:

"IncludeEmbeddedObjects"  (2)

默认情况下,不包括嵌入对象:

包括所有嵌入对象:

包括评论中的嵌入对象:

"IncludeNamespaces"  (2)

默认情况下,不包括 namespace:

包括 namespace:

"NormalizeWhitespace"  (2)

默认情况下,标准化所有空格:

不标准化空格:

"PreserveCDATASections"  (2)

默认情况下,不保留字符数据部分的内容:

包括字符数据部分的内容:

"ReadDTD"  (2)

默认情况下,Import 读取外部 DTD 文件并用它进行验证:

不要读取外部 DTD 文件:

"ValidateAgainstDTD"  (2)

默认情况下,当 DTD 文件存在时,Import 会报告验证错误:

禁止对 DTD 的验证:

导出的选项  (1)

"AttributeQuoting"  (1)

Export 到 XML,比较使用不同的属性值分隔符所得到的结果: