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

XML进门的常见标题(三)

如何加载有外国和特别字符的文档?文档可以包含外国字符,例如:foreigncharacters(?)例如?磲的外国字符必需在前面加上escape序列。外国字符可以是UTF-8编码或用不同编码指定,

如何加载有外国和特别字符的文档?

文档可以包含外国字符,例如:

foreign characters (úóí?)

例如 ?磲 的外国字符必需在前面加上 escape 序列。外国字符可以是 UTF-8 编码或用不同编码指定,如下所示:

foreign characters (?磲)

现在可以准确加载 XML 了。

其他字符是保留在 XML 中的,并且需要以不同的方法处理。下面的 XML:

This & that

产生如下错误:

此处不答应有空格。

行 0000001: This & that

地位 0000012: ----------^

此处 & 是 XML 句法结构的一部分,假如它仅仅放在 XML 数据源内部,那么不能说明为 &。您需要调换称为“实体”的特别字符序列。

This & that

下面的字符需要相应的实体:

以下为引用的内容:

  <<
  & &
  > >
  " "
  ' '

引号字符被用作标记中属性值的定界符,因此通常不能在属性值的内部应用。例如,下面的内容将返回错误:

此处的单引号既用作属性定界符,又在属性值自身中。为了改正这个标题,可以将属性定界符换成双引号:

或者可以将单引号转义为实体 '

上述两种方法都将通过 XML 对象模型中的 getAttribute 方法返回属性值 John's Stuff。同样,对于双引号,您可以应用实体"。

也可以通过将文本放在 CDATA 节中来处理元素内容中的特别字符。下面的内容是准确的:

在本例子中,XML 对象模型将 CDATA 节点显示 xml 节点的子节点,它将返回字符串

This & that is just "text" content.

作为 nodeValue。

如何在 Visual Studio 6.0 C 中应用 MSXML COM 组件?

在 Visual C 6.0 中应用 MSXML COM 组件M的最简便方法是应用 #import 指令:

#import "msxml.dll" named_guids no_namespace#import "msxml.dll" named_guids no_namespace

它定义了所有 IXML* 接口和接口 ID,从而可以在利用程序中应用它们了。也可以从 INETSDK 获取 MSXML 类型库和头文件(英文),以及包含类 IIDs 的 uuid.lib。

如何在 XML 中应用 HTML 实体?

下面的 XML 包含 HTML 实体:

Copyright ? 2000, Microsoft Inc, All rights reserved.

它产生下列错误:

引用未定义的实体 'copy'。

行: 1, 地位:23, 错误码:0xC00CE002

Copyright ? 2000, ...

这是由于 XML 只有五个内置实体。关于内置实体的具体信息,请参阅如何加载有外国和特别字符的文档?

要应用 HTML 实体,需要用 DTD 定义它们。有关 DTD 的具体信息,请参阅 W3C XML 建议(英文)。要应用该 DTD,请将它直接包含在 DOCTYPE 标记中,如下所示:

Copyright ? 2000, Microsoft Inc, All rights reserved.

要加载它,需要封闭 IXMLDOMDocument 接口的 validateOnParse 属性。请尝试将它粘贴到“Validator 测试页”中,封闭 DTD 验证,然后单击“验证”。请留心文档将加载,并且版权字符将显示在 validator 页面的末尾的 DOM 树中。

假如已经完成了 DTD 验证,那么必需将作为参数实体的 HTML 实体包含在现有的 DTD 中,如下所示:

%HTMLENT;

%HTMLENT;

它将定义所有 HTML 实体,以便在 XML 文档中应用它们。

在元素内容中如何处理空缺字符?

XML DOM 有三种拜访元素文本内容的方法:

属性 行动

nodeValue 按照原始的 XML 源中指定的那样,返回 TEXT、CDATA、COMMENT 和 PI 节点上的原始文本内容(包含空缺字符)。对于 ELEMENT 节点和 DOCUMENT 本身,则返回空值。

数据与nodeValue雷同

文本重复连接指定子树中的多个 TEXT 和 CDATA 节点并返回组合成果。

留心:空缺字符包含新行、tab 和空格。

nodeValue 属性通常返回原始文档中的内容,与文档如何加载和当前 xml:space 范畴无关。

文本属性连接指定子树中的所有文本并扩大实体。这与文档如何加载、preserveWhiteSpace 开关确当前状态和当前 xml:space 范畴有关,请看如下所示:

以下为引用的内容:

  preserveWhiteSpace = true when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
保留 保留 保留 保留并截断


  preserveWhiteSpace = false when the document is loaded
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default
半保留 半保留并截断 半保留 半保留并截断

此处的保留表现和原始 XML 文档中完整雷同的原始文本内容,截断意味着前导和尾部空格已经删除,半保留心味着保留了“重要的空缺字符”并规范化了“不重要的空缺字符”。重要的空缺字符是文本内容内部的空缺字符。不重要的空缺字符是标记之间的空缺字符,请看如下所示:

以下为引用的内容:
  \n
  \t  Jane\n
  \tSmith   \n

在本示例中,红色是可以疏忽的不重要的空缺字符,而绿色是重要的空缺字符,由于它是文本内容的一部分,因此有不可疏忽的重要含义。所以在本例中,文本属性返回下列成果:

状态 返回值

保留 "\n\t  Jane\n\tSmith  \n"

保留并截断 "Jane\n\tSmith"

半保留 "  Jane Smith  "

半保留并截断 "Jane Smith"

请留心“半保留”将规范化不重要的空缺字符,例如,新行和 tab 字符将退化为单个空格。假如更改 xml:space 属性和 preserveWhiteSpace 开关,那么文本属性将返回相应的不同值。

CDATA and xml:space="preserve" subtree boundaries

在下面的例子中,CDATA 节点或“保留”节点的内容将得到连接,原因是它们不参与不重要的空缺字符规范化。例如:

以下为引用的内容:

  \n
  \t Jane \n
  \t   Smith   ]>\n

在这种情况下,CDATA 节点内部的空缺字符不再与“不重要”空缺字符“合并”,并且不会截断。因此“半保留并截断”情况将返回下列内容:

"Jane   Smith"

在此,标记之间的不重要的空缺字符将包含在内,与 CDATA 节点的内容无关。假如用下列内容代替 CDATA,那么将返回雷同成果:

Smith

实体是特别的

实体是作为 DTD 的一部分加载和分析的,并且显示在 DOCTYPE 节点下。它们不必定要有任何 xml:space 范畴。例如:

以下为引用的内容:
  Jane \n
  \t\n
  ">
  ]>
  &Jane;

假定 preserveWhiteSpace=false(在 DOCTYPE 标记范畴内),在分析实体时不重要的空缺字符丧失。实体将不会有空缺字符节点。树将类似于:

推荐阅读
  • wxParse 0.3:微信小程序中的高级 HTML 和 Markdown 富文本解析器,全面支持多级嵌套与 Emoji 表情
    wxParse 0.3 是一款专为微信小程序设计的高级富文本解析器,支持 HTML 和 Markdown 转换为 WXML 可视化格式。该组件不仅能够处理复杂的多级嵌套结构,还全面支持 Emoji 表情,极大地提升了内容展示的多样性和用户体验。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 通过自定义 `TextView`,实现了在用户点击或焦点变化时动态调整字体颜色的效果。该方法利用了 `ColorStateList` 和 `Selector` 资源文件,确保了界面交互的流畅性和视觉效果的提升。具体实现中,通过重写 `onTouchEvent` 和 `onFocusChanged` 方法,精确控制了颜色变化的时机和状态。此外,还对性能进行了优化,确保在高频率操作下依然保持高效响应。 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 如何在IDEA中安装和配置反编译插件以提高代码审查效率
    在 IntelliJ IDEA 中提升代码审查效率的一种方法是安装和配置反编译插件。首先,进入 IDEA 的设置界面,然后导航到插件管理部分。接下来,搜索 "ideaJad" 插件并进行安装。安装完成后,重启 IDEA 以确保插件生效。这将帮助你在审查二进制文件时更加高效地查看源代码。 ... [详细]
  • 本文全面介绍了 Windows 快捷键的使用方法,旨在帮助用户提高工作效率。通过详细解析各类快捷键的应用场景和功能,为用户提供了一站式的操作指南。无论是新手还是资深用户,都能从中受益,轻松掌握提升生产力的实用技巧。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • 为了在Fragment中直接调用Activity的方法,可以通过定义一个接口并让Activity实现该接口来实现。具体步骤包括:首先在Fragment中声明一个接口,并在Activity中实现该接口。接着,在Fragment中通过类型转换检查Activity是否实现了该接口,如果实现了则调用相应的方法。这种方法不仅提高了代码的解耦性,还增强了模块间的通信效率。此外,还可以通过ViewModel或LiveData等现代Android架构组件进一步优化这一过程,以实现更加高效和可靠的通信机制。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
author-avatar
手机用户2502905615
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有