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

写给XML初学者的一些话

差未几天天都有人问“什么是XML”,“XML能做什么”,“XML能不能替我做这个”,“XML会代替什么”等等诸如此类的标题。由于最近一段时间稍微对xml应用了一下,我来谈谈自己
差未几天天都有人问“什么是 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技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • wxParse 0.3:微信小程序中的高级 HTML 和 Markdown 富文本解析器,全面支持多级嵌套与 Emoji 表情
    wxParse 0.3 是一款专为微信小程序设计的高级富文本解析器,支持 HTML 和 Markdown 转换为 WXML 可视化格式。该组件不仅能够处理复杂的多级嵌套结构,还全面支持 Emoji 表情,极大地提升了内容展示的多样性和用户体验。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 如何运用蒙特卡洛方法计算NPV:计算机专业毕业设计遇到难题怎么办?
    许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ... [详细]
  • 在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` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
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社区 版权所有