如果XML文档使用的字符编码不是UTF-8(8-bit ASCII文本也是可接受的UTF-8)或者UTF-16,那么它必须在XML声明中提供字符编码声明,否则XML Parser可能会出错。当然,即使对字符编码进行了声明,Parser也可能不能够处理(不支持该编码),但能够正确地给出提示信息。(由于XML声明是使用基本的ASCII文本书写的,Parser能够正确地读出它的内容。)
. 导入MSXML
首先,需要导入MSXML头文件和库到VC6.0工程中。有两种导入方式:6U6Linux联盟
(1)自动方式,在源代码中添加如下两行程序即可:6U6Linux联盟
#import 6U6Linux联盟
using namespace MSXML2;6U6Linux联盟
(2)手动方式(有存在的理由么?呵呵)6U6Linux联盟
a)找到MSXML 4.0 SDK的安装目录,去发现两个子目录inc和lib;6U6Linux联盟
b)在VC选项中,将MSXML 4.0下inc和lib子目录添加到默认的头文件和库文件搜索路径中;6U6Linux联盟
c)在使用MSXML的源文件中包含头文件;6U6Linux联盟
d)在工程设置中将msxml2.lib添加到要链接的库中。
以自动方式导入MSXML,会在你的工程目录下(或者Debug/Release下)生成两个头文件msxml4.tlh和msxml4.tli(前者为头文件声明,后者为内联函数定义文件)。
----------------------------------------------------------------------
-----------------------------------------------------------------------如果是遍历一个未知XML文档,就需要使用IXMLDOMDocumentPtr的documentElement获得根元素,使用 IXMLDOMNodePtr的firstChild、nextSibling成员获得一个节点的所有子节点;使用IXMLDOMNodePtr的 nodeType成员来判断节点类型(元素、属性、文本,等等),使用text成员得到文本值,使用nodeName成员得到节点名。还可以使用 IXMLDOMDocumentPtr、IXMLDOMNodePtr等的xml成员获得相应的xml字符串。另详细的资料请参考MSXML 4.0 SDK文档。
另外,在程序中动态创建的text节点的text值的数据量大小是有限的,在我的机器上测试发现(默认VC配置),使用256K的数据还正常,但使用512K的数据时就Stack Overflow了。但是,加载XML文档时是没有问题的,其数据量并不受此限制。
最后,在你使用MSXML DOM时,请清醒地认识到它在内部是一颗树的表示,任何数据都是以节点形式存在的。That’s all!
----------------------------------------------------------------------
--------------------------------------------------------------------
$xml = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA); 这样就可以了。
---------------------------------------------------------------
-----------------------------------------------------------------