VC操作XML:CMarkup类详解及示例

1星 需积分: 4 6 下载量 68 浏览量 更新于2024-09-15 收藏 232KB DOC 举报
"VC++中操作XML文件主要介绍如何使用CMarkup类进行解析和操作XML文档,包括XML特殊字符的处理、CMarkup类的基本使用、创建XML文档以及浏览特定元素的方法。" 在VC++开发中,处理XML文件是常见的需求,CMarkup类提供了一个方便的接口来操作XML文档。这个类由First Object公司开发,允许开发者进行XML的读取、写入和修改等操作。以下是关于CMarkup类和XML操作的一些关键知识点: 1. XML特殊字符: 在XML中,有五个预定义的字符实体,需要特殊处理以防混淆XML语法。它们分别是: - `&`(与) - 应表示为`&amp;`或`&#38;` - `'`(单引号) - 应表示为`&apos;`或`&#39;` - `>`(大于) - 应表示为`&gt;`或`&#62;` - `<`(小于) - 应表示为`&lt;`或`&#60;` - `"`(双引号) - 应表示为`&quot;`或`&#34;` 2. CMarkup类: - CMarkup类提供了丰富的成员函数来处理XML文档,如添加元素、删除元素、获取子元素数据等。 - 源代码可以在First Object的官方网站上找到,最新的版本为v9.0。下载后将`Markup.cpp`和`Markup.h`导入到项目中,并在`Markup.cpp`文件顶部包含`#include "stdafx.h"`以使用CMarkup类。 3. 创建XML文档: 以下是一个使用CMarkup类创建XML文档的例子: ```cpp CMarkup xml; xml.AddElem("ORDER"); xml.AddChildElem("ITEM"); xml.IntoElem(); xml.AddChildElem("SN", "132487A-J"); xml.AddChildElem("NAME", "crankcasing"); xml.AddChildElem("QTY", "1"); xml.Save("c:\\UserInfo.xml"); ``` 这段代码会创建一个简单的XML文档,结构如下: ```xml <ORDER> <ITEM> <SN>132487A-J</SN> <NAME>crankcasing</NAME> <QTY>1</QTY> </ITEM> </ORDER> ``` 4. 浏览特定元素: 使用CMarkup类可以遍历XML文档并获取特定元素的数据: ```cpp CMarkup xml; xml.Load("UserInfo.xml"); while (xml.FindChildElem("ITEM")) { xml.IntoElem(); xml.FindChildElem("SN"); CString csSN = xml.GetChildData(); xml.FindChildElem("QTY"); int nQty = _ttoi(xml.GetChildData()); // ...其他处理 } ``` 这段代码会找到`ORDER`元素下的所有`ITEM`元素,并分别提取`SN`和`QTY`的值。 5. 其他功能: - `AddElem()`用于添加新的元素,`AddChildElem()`用于在当前元素下添加子元素。 - `IntoElem()`方法用于进入指定的元素,使后续的操作针对该元素进行。 - `FindChildElem()`用于查找子元素,如果找到则返回true,否则返回false。 - `GetChildData()`用于获取元素的文本数据。 - `Load()`用于加载XML文件,`Save()`用于保存XML文档。 通过这些方法,开发者可以方便地在VC++中对XML文档进行各种操作,实现数据的存储和交换。CMarkup类的灵活性和易用性使得XML处理变得更加简单。