VC下XML解析类 CXMLParse 指南

来源:互联网 发布:papi酱人气下滑 知乎 编辑:程序博客网 时间:2024/05/21 11:23

说明

CXMLParse类最初版本来自于codeproject.com

http://download.csdn.net/source/534628

在多年的使用过程中,做了一些自己的升级,

包括:

1.修改了一些原作者的bug

2.添加了对中文解析的支持

3.去除了对于mfc的依赖,出口改为STL C++  

常用接口函数

1.bool Load( const char * szFileName ); 从xml文件加载XML文档内容

2.bool Save( const char * szFileName ); 存档

3.AddElem 添加节点

4.AddChildElem 添加子节点

5. AddAttrib 添加节点属性

6. AddChildAttrib 添加子节点属性

7.IntoElem 进入子节点

8.OutOfElem 从子节点跳出

范例

1.文档载入与保存

CXMLParse xml;

xml.Load("C://demo.xml");

xml.Save("C://export.xml");

2.XML文档创建

CXMLParse xml;

xml.AddElem("Demo");

xml.AddChildElem("Child");

xml.AddChildAttrib("Name","Nieo");

xml.AddChildAttrib("Sex",1);

形成的XML内容为

<Demo><Child Name="Nieo" Sex="1"/></Demo>

3.多层XML文档创建

CXMLParse xml;

xml.AddElem("Demo");

xml.AddChildElem("Root");

xml.IntoElem();

xml.AddChildElem("Child");

xml.AddChildAttrib("Name","Nieo");

xml.AddChildElem("Child");

xml.AddChildAttrib("Name","Simen")

xml.OutofElem();

形成的XML内容为

<Demo><Root><Child Name="Nieo"/><Child Name="Simen"/></Root></Demo>

4.XML文档解析以如下文档为例

<Html>

<Header><meta name="author" content="Csdn" /> </Header>

<Body><Nieo Sex="1" Nickname="NieoDing"/></Body></Html>

要查找到Nieo的Nickname

CXMLParse xml;

xml.Load(.....);

xml.FindChildElem("Body");

xml.IntoElem();

if(xml.FindChildElem("Nieo"))

{    

string nickname = xml.GetChildAttrib("NickName")

}

5.std::string与CXMLParse的交互 

CXMLParse -> std::string

CXMLParse xml;

.........

std::string doc = xml.GetDoc(); 

std::string -> CXMLParse

std::string doc = "<body>.....</body>";

CXMLParse xml(doc.c_str());




不依赖xml文件的情况下,解析、发送xml格式的码流

void CtestxmlDlg::OnBnClickedMakexml()
{
// TODO: 在此添加控件通知处理程序代码
CXMLParse xml;
xml.AddElem("配置");
xml.AddChildElem("开户行");
xml.AddChildAttrib("property","工行石家庄分行");
xml.AddChildAttrib("sss","ddd");
xml.AddChildElem("代理号");
xml.AddChildAttrib("property","06368");
xml.Save("C://test.xml");

xml.Load("C://test.xml");
if(xml.FindElem("配置"))
AfxMessageBox("FIND");
else
AfxMessageBox("NOTFIND");

}

运行结果为:NOTFIND,但是如果把“配置”改成英文的结果就是FIND,你的类好像在解析时不能支持中文


原创粉丝点击