VC操作XML:CMarkup类详解及示例
1星 需积分: 4 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语法。它们分别是:
- `&`(与) - 应表示为`&`或`&`
- `'`(单引号) - 应表示为`'`或`'`
- `>`(大于) - 应表示为`>`或`>`
- `<`(小于) - 应表示为`<`或`<`
- `"`(双引号) - 应表示为`"`或`"`
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处理变得更加简单。
2021-09-27 上传
2021-10-20 上传
2020-09-05 上传
2011-10-27 上传
2010-06-11 上传
2010-06-20 上传
2009-12-28 上传
1662 浏览量
2011-12-05 上传
wnpllrzodiac
- 粉丝: 0
- 资源: 14
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍