首页 > 语言 > 关键词   >  XML最新资讯  > 正文

了解 XML实现通用的数据访问

2007-08-17 11:46 · 稿源:编程中国

XML 信息集

W3C XML Information Set 推荐描述了 XML 文档的抽象表现形式。XML 信息集主要用作各种 XML 技术使用的定义集,以正式描述需要技术处理的 XML 文档部分。有几种 W3C XML 技术是按照 XML 信息集进行描述的,包括 SOAP 1.2、XML 架构和 XQuery。

XML 信息集是 XML 文档的树状层次表示。一个 XML 文档的信息集包含许多信息项,这些信息项是 XML 文档组件的抽象表示,其中包括表示文档、文档的元素、属性、处理指令、注释、字符、表示法、命名空间、未分析的实体、未扩展的实体引用和文档类型声明的信息项。XML 信息集是被正式推荐的机制,通过它来定义 XML 文档中应被重视的重要信息。例如,信息集不区分空元素的两种形式。因此根据 XML 信息集,以下两种表示方法

<test></test>

<test/>

是相同的。同样,属性所使用的引号类型也不重要,因此根据 XML 信息集,元素

<test attr='value'/>

<test attr="value"/>

是相同的。XML 信息集认为不重要的 XML 1.0 语法内容列表在 W3C XML Information Set 推荐的附录 D 中提供。

XML Information Set 推荐介绍了“综合信息集 (Synthetic Infosets)”的概念。所谓综合信息集是指除使用分析文本形式的 XML 文档之外还用其他方法创建的信息集。综合信息集为使用 XML 技术处理非 XML 数据奠定了基础,当然前提是此类数据可以映射到 XML 信息集。处理综合信息集的一个示例是 ObjectXPathNavigator,它允许用户在 .NET Framework 中使用 Xpath 查询对象,或者使用 XSLT 转换对象。

架构语言

XML 架构语言用于描述 XML 文档的结构和内容。例如,可以使用架构指定文档中包含一个或多个compact-disc元素,而每个compact-disc元素都包含子元素price、title和artist。在交换文档的过程中,XML 架构可以描述 XML 生成程序与使用程序之间的约定,因为它描述了这二者之间的有效 XML 消息的组成。虽然存在大量用于 XML 的架构语言,从 DTD 到 XDR,但目前最权威的是 W3C XML 架构定义语言,通常简称为 XSD。

XSD 在 XML 架构语言中是独一无二的,因为它最先尝试扩展 XML 架构的作用,使之不再局限于仅用来描述两个实体交换文档时的约定。XSD 引入了“后架构验证信息集 (Post Schema Validation Infoset,PSVI)”的概念。一个完整的 XSD 处理器接受 XML 信息集作为输入,并在验证时将其转换为后架构验证信息集 (PSVI)。PSVI 是初始的输入 XML 信息集,带有添加的新信息项和添加到现有信息项中的新属性。W3C XML Schema 推荐列出了后架构验证的信息集的组成要素。

类型注释是 PSVI 组成要素中很重要的一类。元素和属性需进行严格的类型定义,并具有与之相关的数据类型信息。经过严格类型定义的 XML 有很多用途,可以使用 .NET Framework 的 XmlSerializer 等技术将其映射到对象,可以使用 SQLXML 和 .NET Framework 的 DataSet 技术将其映射到关系表格,或者使用利用了严格类型机制的 XML 查询语言,如 XPath 2.0 和 XQuery 对其进行处理。

以下示例是一个架构片段,描述了 XML 文档剖析 一节中示例文档的items元素。

以下为引用的内容:

<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

<xs:element name="items">
<xs:complexType>
  <xs:sequence>
   <xs:element ref="compact-disc" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="compact-disc">
<xs:complexType>
  <xs:sequence>
   <xs:element name="price" type="xs:decimal" />
   <xs:element name="artist" type="xs:string" />
   <xs:element name="title" type="xs:string" />
  </xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

基于树模型的 API

树模型 API 将 XML 文档呈现为由节点组成的树,这个树通常可以立即加载到内存中。最常用的 XML 树模型 API 是 W3C 文档对象模型 (DOM)。DOM 支持以编程方式读取、处理和修改 XML 文档。

以下示例使用 .NET Framework 中的 XMLDocument 类获取items元素中第一个compact-disc的艺术家姓名和标题。

以下为引用的内容:

using System;
using System.XML;

public class Test{

public static void Main(string[] args){

  XmlDocument doc = new XMLDocument();
  doc.Load("test.XML");

  XmlElement firstCD = (XMLElement) doc.DocumentElement.FirstChild;
XMLElement artist =
(XMLElement) firstCD.GetElementsByTagName("artist")[0];
  XMLElement title  =
(XMLElement) firstCD.GetElementsByTagName("title")[0]

  Console.WriteLine("Artist={0}, Title={1}", artist.InnerText, title.InnerText);
}
}

基于游标的 API

XML 游标 API 就像在 XML 文档中移动的镜头,对准被定向的文档的各个方面。.NET Framework 中的 XPathNavigator 类就是一个 XML 游标 API。XML 游标 API 与树模型 API 相比,具有不必将整个文档加载到内存中的优势,这样便于对 XML 生成程序中按需生成文档的部分进行优化。

以下示例使用 .NET Framework 中的 XPathNavigator 类获取items元素中第一个compact-disc的艺术家姓名和标题。

以下为引用的内容:

using System;
using System.XML;
using System.XML.XPath;

public class Test{

public static void Main(string[] args){

  XmlDocument doc = new XMLDocument();
  doc.Load("test.XML");

  XPathNavigator nav = doc.CreateNavigator();

  nav.MoveToFirstChild(); //从根节点移至文档元素 (items)
  nav.MoveToFirstChild(); //从 items 元素移至第一个 compact-disc 元素
  
  //从 compact-disc 元素移至 artist 元素
  nav.MoveToFirstChild();
  nav.MoveToNext();
  string artist = nav.value;

  //从 artist 元素移至 title 元素
  nav.MoveToNext();
  string title = nav.value;

  Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}

流式 API

使用处理 XML 的流式 API 时,用户只需在内存中存储要处理的当前节点的上下文,即可处理 XML 文档。此类 API 可以处理大型的 XML 文件,而不会占用庞大的内容空间。用于 XML 处理的流式 API 主要有两种类型:基于推进的 XML 分析器和基于拉出的 XML 分析器。

基于推进的分析器(如 SAX)的工作方式是在 XML 数据流中移动,并在遇到 XML 节点时将事件“推进”到已注册的事件处理程序(回调方法)。基于拉出的分析器(如 .NET Framework 中的 XmlReader 类)则在 XML 数据流中用作只向前的游标。

以下示例使用 .NET Framework 中的 XMLReader 类获取items元素中第一个compact-disc的艺术家姓名和标题。

以下为引用的内容:

using System;
using System.XML;

public class Test{

public static void Main(string[] args){

  string artist = null, title = null;
  XmlTextReader reader = new XmlTextReader("test.XML");

  reader.MoveToContent(); //move from root node to document element (items)

  /* 保持读取,直至获得第一个 <artist> 元素 */
  while(reader.Read()){

   if((reader.NodeType == XMLNodeType.Element) && reader.Name.Equals("artist")){

    artist = reader.ReadElementString();
    title = reader.ReadElementString();
    break;
   }
  }
  Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}

举报

  • 相关推荐
  • 大家在看
  • 汉斯顿净水器怎么样?用户与数据告诉你答案

    本文从质量保障、用户口碑和性价比三个维度全面解析汉斯顿净水器的实际表现。作为国内净水领域领先品牌,汉斯顿建立了完善的质量控制体系,产品通过多项权威认证,采用自主研发的GPAN超滤膜等核心技术,净水效果达到医疗级标准。市场表现方面,连续8年蝉联"消费者满意品牌",电商好评率常年保持98%以上,全国布局5000多个服务网点提供完善售后支持。价格策略上,汉斯顿以国际技术打造大众可负担的优质产品,实现技术与价格的合理匹配。文章建议消费者根据实际水质情况和需求选择合适型号,汉斯顿凭借过硬品质和亲民定位,成为家庭健康饮水的可靠选择。

  • 后信创时代,融合数据库成为国产数据库的新锚点

    7月15日,中电科金仓发布四款AI时代数据库核心产品:KES V92025融合数据库、KEMCC统一管控平台、云数据库一体机(AI版)和KFS Ultra智能数据集成平台。公司提出"融合数据库"战略,通过底层架构重构实现多模态数据统一处理,支持向量检索、语义计算等AI场景需求。金仓同步启动"金兰组织2.0"计划,联合产学研力量构建国产数据库生态。此次发布标志着国产数据库从"替代兼容"转向"定义未来",在AI驱动的技术变革中与国际厂商同步起跑。预计到2028年,中国数据库市场规模将达930亿元,年复合增长率12.23%。

  • 瓴羊带队“走进麦当劳·会数据同学”,看麦当劳中国如何用AI重塑“人货场

    麦当劳中国宣布未来4年将投入40亿元加速数字化转型,聚焦"人货场"重构,通过与阿里云、羚羊等深度合作打造数字化价值链。重点包括:1)消费者端整合会员与订单系统,实现体验协同;2)门店端通过AI排班、IoT设备管理等提升运营效率,1名员工可远程管理多家门店;3)总部构建动态管理体系,实现数据驱动决策。同时,羚羊发布智能客服Agent,覆盖电商、汽车等行业,解决退货流程复杂等行业痛点,部分场景效率提升80%。阿里云强调大模型需与业务深度融合,已在零售业知识库、智能建单等场景落地。麦当劳通过数字化手段降低管理门槛,支撑每年新增1000家门店的扩张目标。

  • 亿信华辰数据治理解决方案助力构建高质量数据集

    文章探讨了AI时代高质量数据的重要性及数据治理的关键作用。指出80%的AI项目因数据质量问题失败,低质、分散、标准不一的数据成为AI落地的主要障碍。提出数据治理应从"数据可用"到"数据好用"构建全链路能力,包括明确治理目标、搭建管理平台、持续改进质量三大核心动作。以亿信华辰为例,介绍其通过"标准-质量-资产-安全"四大模块的数据治理平台,帮助客户提升AI项目效率60%以上。强调数据治理已成为企业智能转型的必选项,需要建立专业组织和运营机制,持续挖掘高价值数据,为AI提供精准供给。

  • 从“不敢替”到“能平替”:国产数据库如何逆袭Oracle核心腹地?

    文章讲述了一位资深数据库管理员老邓对国产数据库替代Oracle的担忧与转变。老邓最初对国产数据库持怀疑态度,担心应用改造难度大、数据迁移复杂、系统停机时间长等问题。但在技术选型会上,一家国产数据库厂商展示了六大核心解决方案:高兼容性实现零改造、全自动迁移工具确保数据一致性、柔性迁移方案避免停机、基于真实负载的测试工具、双轨并行随时回退机制,以及媲美Oracle的性能表现。最终老邓被金仓数据库的技术实力所折服,项目成功上线运行稳定。文章展现了国产数据库在核心技术上的突破,能够满足关键业务系统的替代需求。

  • 渣打中国与网易数帆展开合作,探索数据开发智能化升级

    7月23日,渣打银行(中国)与网易数帆在上海举行线下交流会,探讨金融行业数据治理、AI技术与银行数字化发展等议题。渣打中国首席信息官乔建新等高管出席。作为历史悠久的国际银行,渣打持续加大金融科技投入,加快数字化转型。网易数帆基于20余年技术沉淀,以数据应用为核心,助力金融机构释放数据价值。2022年双方合作升级EasyData平台,此次进一步探讨AI技术提升数据开发效能的新路径,展示自然语言生成代码等功能。未来双方将继续深化合作,推动前沿科技在金融领域的创新应用。

  • 沃莱科技「体脂秤×围度尺×跳绳」:让体重管理从“减肥焦虑”到“数据掌控”

    沃莱科技推出"健康黄金三角"智能健身方案:P7Max八电极体脂秤精准测量8项核心指标,误差仅±2mm的W5智能围度尺追踪腰臀腿变化,鸿蒙智选智能跳绳S2实时监测燃脂心率。三款产品通过Fitdays+App实现数据联动,形成"运动-监测-调整"闭环,解决传统健身效果难量化问题。其中P7Max体脂测量与DEXA金标准相关性达0.985,W5可捕捉毫米级围度变化,跳绳S2配备动态心率算法确保运动处在最佳燃脂区间。该方案突破体重单一维度评估,实现体脂健康可视化追踪与科学管理。

  • 2025年国内AI大模型哪家强?上AI大模型选型对比工具,用数据说话!

    文章分析了国内AI大模型市场竞争格局,指出百度、阿里、腾讯、字节等科技巨头与初创公司纷纷布局,呈现繁荣景象。针对用户选型难题,提出需综合考虑参数规模、场景适配、成本效益等关键因素,并介绍了AIbase推出的AI大模型选型对比工具。该工具汇集主流模型最新数据,支持多维度能力对比和场景化筛选,帮助用户快速定位最适合自身需求的模型。最后强调没有"最强"的通用模型,只有最匹配特定场景的解决方案。

  • 冷建全的“冷”思考:AI狂潮下,金仓数据库为何把“融合”刻进基因?

    7月15日,中国电科旗下金仓数据库以"融合进化 智领未来"为主题发布全新战略,提出未来数据库应"以融合为体,以AI为用"。金仓数据库高级副总裁冷建全指出,国产数据库在AI时代的突围路径是构建"五个一体化"融合能力体系,而非简单追逐热点。金仓数据库通过多语法体系兼容、多集群架构支持、多模型数据存储、多应用场景处理、开发运维一体化五大能力,显著降低国产化替代总成本。在AI应用方面,金仓重点布局向量计算和智能运维,其向量引擎已支持多种数据类型,并应用于公共安全、电力巡检等领域。同时推出的"K宝"AI助手可提供智能运维支持,故障预警准确率达98%以上。金仓强调"融合是根本,AI是赋能",通过夯实数据库内核能力,为各行业数字化转型提供稳定高效的数据基础设施支撑。

  • 绿舟受邀访问瑞典驻华大使馆,聚焦CBAM共探可持续发展

    绿舟作为跨境碳合规领军企业,受邀访问瑞典驻华大使馆,与瑞典驻华大使馆一等秘书Erik Lindner Olsson及项目官员杨华女士就中瑞企业可持续发展问题展开交流。绿舟联合创始人李智圆先生与绿舟CBAM合规经理崔浩洋先生代表公司出席。双方聚焦CBAM政策与ESG建设,探讨如何助力跨境企业高效合规出海。绿舟已服务超70%头部跨境企业,构建了完善的碳合规体系,推出行业首个一站式碳管理SaaS平台。此次交流深化了中瑞企业在绿色低碳领域的合作共识,为跨境企业应对全球环保政策挑战提供专业支持。

这篇文章对你有价值吗?

今日大家都在搜的词: