XML 中的常见问题[5]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 angelgavin 的 blog

问题和解决方案

为什么在调用了 load() 方法后,我的文档对象仍然为空?

默认情况下操作是异步加载的。这意味着如果提供 http url 地址,那么 load() 方法将直接返回,并且文档对象仍然为空,因为数据还没有从服务器返回。为了纠正这个问题,请在代码中添加下面的行:

xmldoc.async = false;
同时,如果是从独立的 c++ 应用程序加载 http xml 文档,那么必须查询消息队列才能继续加载。

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

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

foreign characters (úóíÿ) 
例如 磲 的外国字符必须在前面加上 escape 序列。外国字符可以是 utf-8 编码或用不同编码指定,如下所示:

foreign characters (磲) 

现在可以正确加载 xml 了。

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

this & that
产生如下错误:
此处不允许有空格。
行 0000001: this & that
位置  0000012: ----------^

此处 & 是 xml 句法结构的一部分,如果它仅仅放在 xml 数据源内部,那么不能解释为 &。您需要替换称为“实体”的特殊字符序列。

this & that

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

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

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

或者可以将单引号转义为实体 &apos;

上述两种方式都将通过 xml 对象模型中的 getattribute 方法返回属性值 john's stuff。同样,对于双引号,您可以使用实体
"。

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


   is just "text" content。 ]]>

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

this & that  is just "text" content.

作为 nodevalue

如何在 visual studio 6.0 c++ 中使用 msxml com 组件?

在 visual c++ 6.0 中使用 msxml com 组件的最简便方式是使用 #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 建议(英文)非 ms 链接。要使用该 dtd,请将它直接包括在 doctype 标记中,如下所示:

copyright © 2000, microsoft inc, all rights reserved.

要加载它,需要关闭 ixmldomdocument 接口的 validateonparse 属性。请尝试将它粘贴到“validator 测试页”中,关闭 dtd 验证,然后单击“验证”。请注意文档将加载,并且版权字符将显示在 validator 页面的末尾的 dom 树中。

如果已经完成了 dtd 验证,那么必须将作为参数实体的 html 实体包括在现有的 dtd 中,如下所示:

%htmlent;
%htmlent;
它将定义所有 html 实体,以便在 xml 文档中使用它们。

本文关键:XML 中的常见问题
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top