热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

给XML初学者

类型:XML/Biztalk差未几天天都有人问“什么是XML”,“XML能做什么”,“XML能不能替我做这个”,“XML会代替什么”等等诸如此类的标题。由于最近一段时间稍微对xml应用了一下
类型: XML/Biztalk


差未几天天都有人问“什么是 XML”,“XML 能做什么”,“XML 能不能替我做这个”,
“XML 会代替什么” 等等诸如此类的标题。由于最近一段时间稍微对 xml 应用了一下,
我来谈谈自己的感到。这些经验都很浅易,任何一个用过 xml 的人都有,并且见仁见智,
只不过我算刚刚走过这段路,对自己一开端的困惑,曲解还记得清,所以拿出来和大家
分享一下。

我感到初学者可能会走近的误区:

1. XML 是不是 HTML 的代替者

不是。写得好的 html 应当是一个 well-formed 的 xml 文档,其他方面最好不要
把他们放在一个程度线上比拟

2. XML 是不是数据库的代替者

不是。

3. XML 是不是...的代替者

都不是。

这个结论可能听上往很幽默:XML 是非常非常重要的东西,但它什么都代替不了。
但这并不希奇,有人把它比做 ASCII 尺度,他们是一切一切的基础,但并没有
(也不需要)代替什么。(但是就如同 ASCII 代替了一些没有成大器的字符集定义,
XML 也会代替你在利用中自己定义的一些数据传输规范,但没有什么特别主流的东西。)

刚开端学 XML (或者说没开端学之前)的时候最爱问的一个标题确定是:应用 XML 能给我带来什么利益?

我感到从某种角度上说,应用 XML 有些象应用 OO 面向对象:

- 你可以用它,你也可以不用它。
- 假如你的利用非常简略,用它不必定方便,没准儿用了后果还会更差。
- 和其他实际东西比如数据库,MTS,Web Server比起来,它更像是一个概念,一种方法
- 项目越大,它的施展余地越大,作用越大。
- 一旦真正懂得后,哪怕不用 xml parser,也不妨碍你应用这个概念,如同可以抛开特定语言应用 OO。
- ......

似乎更抽象,更没谱儿了吧。
那就随便举个例子。比如你本来想在 bbs 利用中的两个模块之间传一些数据:

- 发言人
- 密码
- 标题
- 内容

应用四个参数是不太现实的,由于你随时可能要扩大功效,比如再加上个
- 表情符号
等等

不可能每次加个功效,就重新定义一遍函数。
所以最简略的方法是把他们合并起来作为一个参数传递给函数。
在有 xml 之前,你可能会应用分隔符:
str = '发言人=张三;密码=**;标题=abc;内容=xyz'
到 server 那边应用 dictionary 或 collection 或 split 等等方法把他们拆开。
(当然可以自己定义对象啦,结构啦等等,但多数情况下还得是纯字符串--比如另一个模块不是自己开发的。)

这种传递字符串的方法有几个标题,总结成两个最大的方面就是:

1. 准确的解析它很麻烦。(比如标题正好是“发言人=张三;”怎么办)
2. 是平面的,没有层次型结构

你可以写些函数来解决这些标题,比如确保里面确定有“发言人”,“密码”等等;
再写些函数做一下字符转义,再写些函数制作出层次性的后果...

够了!咱还是用 XML 吧。在我目前浅易的熟悉里:

- XML 是用来传递数据的
- XML 让这些数占领了结构 -- 一个树型结构
- xml 有全套的把持这种结构的方法
- xml 规范(或者说的实际点,xml parser)帮你断定你创立的字符串是正当的
- xml 规范(或者说的实际点,xml parser)中有措施验证这个正当性
- 对于拿到这个字符串的 server component 来说,可以用 xml 中现成的方法来把持它,
这就是 xpath, pattern,类似于 T-SQL 语句。(但记住 xml 是树型结构的)
- XSLT 应用 xpath 对 xml 进行转换(类似于 DTS),其中一种特例是把 XML 转换成 HTML 输出。



推荐阅读
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 如何运用蒙特卡洛方法计算NPV:计算机专业毕业设计遇到难题怎么办?
    许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
author-avatar
可爱的嗨-我喜欢你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有