简单实用的Xml解析类
http://tech.ddvip.com 2007年06月15日 社区交流
内容摘要:此解析器的接口完全模仿XML4C的对外接口,使用也很类似,稍有不同,对复杂部分进行了封装。总共分3个类: CPacket、DOMElement、DOMDocument。 DOMElement为节点类,主有有tag、level、 parent、childlist 等几个属性。DOMElement类主要是对XML文档的解析
(1)CPacket::CreateElement("/Root/Cust/Tel")会在根节点下创建Root/Cust/Tel 如果存在Root和Cust节点了则不在创建,否则会创建3个节点,Root,Cust,Tel 并且具有父子关系。 (2)CPacket::CreateElement("Root/Cust/Tel") 会在当前节点下创建Root,Cust,Tel,至于当前节点,可以通过SetCurrentElement 来设置,默认根节点是当前节点. 3、节点的查找,节点的查找,有4个函数可以用: CPacket::SearchElement(char * szNodeName); //搜索普通节点,分绝对路径(路径以/开头),相对路径
CPacket::SearchElement(char * szNodeName,char * szProper,char * szId); //指定属性
CPacket::SearchNextElement(bool pMoveNext = TRUE); //当前节点的下一个兄弟节点,参数决定向下移动当前节点,这个函数速度最快
CPacket::SearchNextElement(char *szNodeName,char *szProper = NULL,char *szId = NULL); //下一个节点整体使用示例:void main()
{
string strXml = "";
CPacket inPacket;
DOMElement* TransNode = NULL;
DOMElement* AccNode = NULL;
inPacket.BuiltTree(strXml.c_str(),strXml.size());//生成DOM树结构.
printf("%s",inPacket.GetXml(NULL).c_str());
//MessageBox(inPacket.GetXml(NULL).c_str());
AccNode = inPacket.SearchElement("/Xml/Body/TelNums/TelNum");
if(!AccNode)
return;
inPacket.SetCurrentElement(AccNode);
while(AccNode)
{
printf("%s",AccNode->getTextContent());
MessageBox(AccNode->getTextContent());
AccNode = inPacket.SearchNextElement(true);
}
//注意因为当前节点已经不是根节点,因此如果是全局查找就要在节点名前加上"/" 的全局路径
//AccNode = inPacket.SearchElement("/TelNum","Id","1");
inPacket.ResetCurrentNode();
AccNode = inPacket.SearchElement("TelNum","Id","1");
printf("%s",AccNode->getTextContent());
//MessageBox(AccNode->getTextContent());
//创建XML文档
CPacket outPacket;
outPacket.SetRootTag("Root");
AccNode = outPacket.CreateElement("/Root/Cust/Tel");
AccNode->setTextContent("075507895461");
printf("%s",outPacket.GetXml(NULL).c_str());
//MessageBox(outPacket.GetXml(NULL).c_str());
}当时写的时候仅仅是为了满足我自己使用的方便,很多复杂功能没有实现,代码测试也远远不够,问题很多,真有点怕误导大家,希望大家看后,能够重新写一份出来,供大家使用,有问题发邮件给我:mycrolee@163.com 原来的邮箱mycro@163.com 被一个LJ给盗了。永远BS这种渣滓。
来源:vckbase 作者:李天助 责编:豆豆技术应用
正在加载评论...
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……