- 浏览: 1454618 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
#include <stdio.h>
#include "tinyxml.h"
#include "tinystr.h"
//#pragma warning (disable : 4996)
/*==============全局数据===============*/
const char *substr = "■■";
enum OBJTYPE{ON_CHOSE =4,ON_JUDGE =2};
enum StdAns{A = 1,B,C,D};
/*==============定义结构体=============*/
typedef struct _ObjCollect{ //大题题干结构体
char tgs_Text[50][200];
char tgs_Ans[50][5];
int tgs_num;
OBJTYPE _Type;
void ClearText();//清空两数组
}*pObjCollect,ObjCollect;
typedef struct _ObjInfo{ //小题题干拆分结构体
char tg_Chose[5][50];
char *str_Ans;
char *str_u_Ans;
StdAns _stdAns;
OBJTYPE _Type;
}*pObjInfo,ObjInfo;
typedef struct _ObjRelation{
ObjCollect Rlx_Obj;
TiXmlElement *pRlx_Elm;
}*pObjRelation,ObjRelation;
/*==============相关函数===============*/
OBJTYPE GetOpType();
ObjInfo TransText(const char * temp);
ObjCollect GetAllText(TiXmlElement *pElmCollect);
char *CpsTgtext();
void PrintA(ObjInfo objInfo);
void PrintAll(ObjCollect temp_obj);
void PrintAllWithStdAnswer(ObjCollect temp_obj);
ObjRelation DelNode(ObjRelation temp_rlx);
ObjRelation InsertNode(ObjRelation temp_rlx);
ObjRelation ModifyNode(ObjRelation temp_rlx);
//TiXmlElement SearchElm(TiXmlElement *pObjCollect, ObjCollect tgCollect);
/*==============主函数==================*/
int main()
{
TiXmlDocument *f_xml = NULL;
f_xml->LoadFile(".\\exam.xml");
f_xml->Print();
TiXmlElement *elmRoot = f_xml->RootElement(); //定义根结点
TiXmlElement *elmChos = elmRoot->FirstChildElement();//定义选择题结点
//TiXmlElement *elmtemp = elmChos->FirstChildElement();
//TiXmlElement *elmchild = elmtemp->FirstChildElement();
//TiXmlText abc("oop");
//elmchild->Clear();
//elmchild->InsertEndChild(abc);
//elmChos->InsertEndChild(*elmtemp);
f_xml->SaveFile();
return 0;
}
ObjInfo TransText(const char * temp)
{
ObjInfo sText;
int i = 0;
const char *p = NULL;
const char *_p = NULL;
size_t strlength;
p = temp;
memset(sText.tg_Chose,'\0',sizeof(sText.tg_Chose));
p = strstr(temp,substr); //获得主题干
if(p)
{
strlength = strlen(temp) - strlen(p);
strncpy_s(sText.tg_Chose[i],temp,strlength);
}
else
{
return sText;
}
i++;
for(; i<5;) //获得各选项
{
p += 4;
size_t tempLen = strlen(p);
_p = strstr(p,substr);
if(!_p)
{
strncpy_s(sText.tg_Chose[i],p,strlength);
break;
}
strlength = tempLen - strlen(_p);
strncpy_s(sText.tg_Chose[i],p,strlength);
p = _p;
i++;
}
//for(; i>=0; i--)
//{
// printf("%s\n",tg_Temp[i]);
//}
return sText;
}
ObjCollect GetAllText(TiXmlElement *pElmCollect)
{
ObjCollect tgStext;
tgStext.tgs_num = 0;
for(TiXmlElement *pElm = pElmCollect->FirstChildElement(); pElm; pElm = pElm->NextSiblingElement())
{
TiXmlElement *pTemp = pElm->FirstChildElement();//定义题干结点
TiXmlElement *pAns = pTemp->NextSiblingElement();//定义答案结点
strcpy_s(tgStext.tgs_Text[tgStext.tgs_num],strlen(pTemp->GetText())+1,pTemp->GetText());
strcpy_s(tgStext.tgs_Ans[tgStext.tgs_num],strlen(pAns->GetText())+1,pAns->GetText());
tgStext.tgs_num++;
}
return tgStext;
}
char *CpsTgtext()
{
int i;
char *sText = "";
size_t str_size;
ObjInfo sNewText;
sNewText._Type = GetOpType();
printf("\nplease input new object by order:\nNow,please input main tg:");
scanf_s("%s",sNewText.tg_Chose[0]);
for(i = 0; i<sNewText._Type; i++)
{
printf("\ninput the %d ans:",i+1);
scanf_s("%s",sNewText.tg_Chose[i+1]);
}
strcat_s(sText,strlen(sText),sNewText.tg_Chose[0]);
str_size = strlen(substr);
for(i = 0; i<sNewText._Type; i++)
{
char *sub_str = "■■";
strcat_s(sub_str,str_size,sNewText.tg_Chose[i+1]);
strcat_s(sText,strlen(sText),sub_str);
}
return sText;
}
OBJTYPE GetOpType()
{
int i = 0;
printf("please choose the op type:[1] 操作选择题/ [2] 操作判断题\n");
scanf_s("%d",&i);
if(1 == i)
{
return ON_CHOSE;
}
else if(2 == i)
{
return ON_JUDGE;
}
else
return OBJTYPE(NULL);
}
void PrintAll(ObjCollect temp_obj)
{
int itemp = 0;
for(; itemp<temp_obj.tgs_num; itemp++)
{
printf("%d.%s\n",itemp+1,temp_obj.tgs_Text[itemp]);
}
return;
}
ObjRelation DelNode(ObjRelation temp_rlx)
{
int iDelNum;
ObjCollect Rlx_Obj = temp_rlx.Rlx_Obj;
TiXmlElement *pRlx_Elm = temp_rlx.pRlx_Elm;
TiXmlElement *pDelElm = pRlx_Elm->FirstChildElement();
PrintAll(temp_rlx.Rlx_Obj);
printf("\nplease select the NO. of the OBJ which you want to del:");
while(true)
{
scanf_s("%d",&iDelNum);
if(iDelNum>temp_rlx.Rlx_Obj.tgs_num || iDelNum<1)
{
printf("wrong select!\n");
continue;
}
else
{
for(; iDelNum>1; iDelNum--)
{
pDelElm = pDelElm->NextSiblingElement();
}
pRlx_Elm->RemoveChild(pDelElm);
break;
}
}
temp_rlx.Rlx_Obj.ClearText();
temp_rlx.Rlx_Obj = GetAllText(pRlx_Elm);
temp_rlx.pRlx_Elm = pRlx_Elm;
return temp_rlx;
}
void ObjCollect::ClearText()
{
memset(this->tgs_Text,'\0',sizeof(this->tgs_Text));
memset(this->tgs_Ans,'\0',sizeof(this->tgs_Ans));
return;
}
ObjRelation InsertNode(ObjRelation temp_rlx)
{
char *pAns = NULL;
TiXmlText Tg_Text(CpsTgtext());
printf("please input the currect answer:");
scanf_s("%s",pAns);
TiXmlText Ans_Text(pAns);
TiXmlElement *phNode = temp_rlx.pRlx_Elm;
TiXmlElement Obj_Elm("Q");
TiXmlElement Tg_Elm("TG");
TiXmlElement Ans_Elm("ANS");
TiXmlElement UAns_Elm("U_ANS");
Tg_Elm.InsertEndChild(Tg_Text);
Ans_Elm.InsertEndChild(Ans_Text);
Obj_Elm.InsertEndChild(Tg_Elm);
Obj_Elm.InsertEndChild(Ans_Elm);
Obj_Elm.InsertEndChild(UAns_Elm);
phNode->InsertEndChild(Obj_Elm);
temp_rlx.Rlx_Obj.ClearText();
temp_rlx.Rlx_Obj = GetAllText(phNode);
temp_rlx.pRlx_Elm = phNode;
return temp_rlx;
}
void PrintA(ObjInfo objInfo)
{
int itemp = 0;
char c = 65;
printf("%s\n",objInfo.tg_Chose[0]);
for(; itemp<objInfo._Type; itemp++)
{
printf("%c.%s\n",c,objInfo.tg_Chose[itemp+1]);
c++;
}
return;
}
void PrintAllWithStdAnswer(ObjCollect temp_obj)
{
int itemp = 0;
for(; itemp<temp_obj.tgs_num; itemp++)
{
printf("%d.%s=====%s\n",itemp+1,temp_obj.tgs_Text[itemp],temp_obj.tgs_Ans[itemp]);
}
return;
}
ObjRelation ModifyNode(ObjRelation temp_rlx)
{
int itype = 0;
int inode = 0;
bool sign = false;
TiXmlElement *childElm = NULL;
TiXmlElement *tempElm = temp_rlx.pRlx_Elm;
PrintAllWithStdAnswer(temp_rlx.Rlx_Obj);
printf("please select the object you wish to modify:");
scanf_s("%d",&itype);
for(childElm = tempElm->FirstChildElement(); --itype>1;)
{
tempElm = tempElm->NextSiblingElement();
}
TiXmlElement *pChild = tempElm->FirstChildElement();
while(true)
{
printf("<1>All title ,<2>Std answer ,<3>Exit modify\nplease select which you wish to modify:");
scanf_s("%d",&inode);
if(inode == 1)
{
TiXmlText tText(CpsTgtext());
pChild->Clear();
pChild->InsertEndChild(tText);
sign = true;
}
else if(inode == 2)
{
char *sAns = NULL;
printf("please input the new std answer:");
scanf_s("%s",sAns);
TiXmlText oText(sAns);
pChild->Clear();
pChild->InsertEndChild(oText);
sign = true;
}
else if(inode == 3)
{
return temp_rlx;
}
else
{
printf("wrong select!\n");
continue;
}
if(true == sign)
break;
}
temp_rlx.Rlx_Obj.ClearText();
temp_rlx.Rlx_Obj = GetAllText(tempElm);
temp_rlx.pRlx_Elm = tempElm;
return temp_rlx;
}
=============================================================
许多书写不规范,还有部分语法有误,Mark一个。。
发表评论
-
wxpython学习笔记
2011-01-13 21:21 2032出处:http://www.cnblogs.com ... -
ADO编程实用宝典
2009-05-08 13:05 1478目录 ADO编程实用宝典 目录 一引入A ... -
创建ACCESS的存储过程
2008-09-11 22:52 4803在Access自身的帮助中看到了Create Procedu ... -
实现服务器端的多线程SOCKET Server
2008-09-11 16:45 3413实现服务器端的多线程SOCKET Server 想要实现 ... -
轻量级xml读写模块 tinyXML
2008-09-11 16:32 2901文档和使用例子: http://www.grinningl ... -
使用tinyxml类解析XML
2008-09-11 16:26 2450读取和设置xml配置文件是最常用的操作,试用了几个C++的XM ... -
用VB制作网站登陆器
2008-08-25 20:59 4098Private Sub Command1_Click() Wb ... -
vb+Webbrowser控件详解
2008-08-25 20:54 3283方法 说明 GoBack 相当 ... -
VB自动提交表单问题
2008-08-25 14:32 2478需要知道表单名称呢,比如 <Form name=&quo ... -
BBS灌水机脚本(vb scritp, telnet, bbs, sterm)
2008-08-16 11:32 2520'****************************** ... -
c++下载网页的代码,VC6.0编译通过
2008-05-30 19:21 3859#include <winsock2.h> ... -
【译】C/S 多线程Socket类
2008-05-30 19:16 1678Multi-threaded Client/Server So ... -
C++ Socket Class for Windows
2008-05-30 18:59 1634Here, I present the source c ... -
C++ socket程序
2008-05-30 17:58 11514C++ socket程序 下面是一个C++调用windows ... -
字符串提取
2008-05-05 11:24 1304Function bTest(ByVal s As Strin ... -
VB用正则表达式提取网页中的链接
2008-05-05 10:37 2905VBScript code Function getUrl ... -
利用VB提取HTML文件中的EMAIL地址
2008-05-05 09:53 1194电子邮件(EMAIL)是INTERNET上应用最广泛的一种服务 ... -
VB6.0如何使用正则表达式
2008-05-04 20:39 8015最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB ... -
VB写一个IE插件
2008-05-04 18:20 3073Q: 就类似于3721的插件一样,当用户浏览我的网站的时候,提 ... -
破解VisualStudio2005(vs2005) 的180天限制
2008-04-19 11:53 4572中文版本的软件本身是正式版,但内置的序列号却是180天试用版的 ...
相关推荐
本项目是基于tinyxml2进行的二次封装,旨在进一步简化XML的操作,提供更友好的API,提升开发效率。 在C++中,原始的tinyxml2库可能需要用户手动处理许多底层细节,如节点遍历、属性获取等。通过对tinyxml2的封装,...
TinyXML++,虽然在描述中提及,但没有提供具体的版本或文件,通常它可能是一个基于TinyXML的扩展库,提供了更面向对象的接口或者增加了额外的功能。这个库可能是为了简化XML操作,提供更符合C++编程习惯的对象模型。...
2. 易于使用:TinyXML提供了一套直观的C++类接口,使得XML文档的解析和操作相对简单。 3. 开源:TinyXML是开源软件,这意味着你可以自由地使用、修改和分发它,而且社区支持丰富。 缺点: 1. 性能:相比于更专业的...
注意:如果在Linux上编译测试代码,设置环境变量TINYXML_USE_STL=YES/NO可以控制STL的编译。而在Windows上,项目文件提供了STL和非STL两种目标文件。在你的项目中,在tinyxml.h的第一行添加"#define TIXML_USE_STL...
代码状况方面,TinyXML 是经过充分测试和成熟的代码,具有良好的健壮性。如果发现错误或问题,可以通过 SourceForge 提交报告。同时,还有一些相关的项目,如 TinyXPath 提供了 XPath 查询功能,而 TinyXML++ 提供了...
本资源提供了基于C++的XML文档解析器的源代码,涵盖了读取、遍历、查找、插入和保存等基本功能,对于学习和理解XML解析原理以及C++编程技巧具有很高的参考价值。 首先,XML文档的基本结构包括元素(Element)、属性...
它提供了一套简单的API,用于读取XML文档,提取元素、属性和文本内容。使用minixml,开发者无需了解XML解析的底层细节,只需关注如何在应用程序中处理解析后的数据。 在STM32F107上使用minixml进行XML解析的步骤...
首先,"基于MFC的XML封装类"意味着这个项目提供了一个自定义的C++类,该类包含了对XML文档的各种操作接口,如解析XML文件、创建XML树、修改节点内容、添加或删除子节点等。通过这个封装,开发者可以避免直接与低级别...
它提供了一种DOM(Document Object Model)方式来处理XML文档。 2. PugiXML:轻量级且高效的XML解析库,提供了DOM和SAX(Simple API for XML)两种解析模式。PugiXML在内存占用和速度上都有很好的表现。 3. ...
这个“testXML解析(自己写的小测试)”是基于TinyXML实现的一个小项目,目的是帮助我们理解和实践XML的解析过程。 XML文档的基本结构包括元素、属性、文本内容、注释、处理指令等。元素是XML文档的核心,以尖括号 ...
在VC++中,解析XML文件通常使用MSXML库(Microsoft XML Core Services)或者TinyXML、pugixml等第三方库。本项目可能使用了MSXML库中的IXMLDOMDocument接口,通过加载XML文件,然后遍历其节点,获取和操作XML数据。 ...
GDataXML是Google开源的一个Objective-C库,基于libxml2,提供了一种简单的方式来解析XML文档。它提供了强大的XPath查询支持,可以方便地定位到XML文档中的特定节点。但是,GDataXML相对其他解析器来说,内存消耗较...
在本案例中,已经完成了一个基于TinyXml的动态库工程,并且该工程已在Visual Studio 2005环境下通过了编译和测试。 首先,我们要理解XML(Extensible Markup Language)的作用。XML是一种用于存储和传输数据的标记...
2. **节点操作**:包括查找、创建、删除和修改XML文档中的元素、属性、文本节点等。 3. **命名空间支持**:XML允许使用命名空间来避免元素名的冲突,处理类应能处理XML命名空间。 4. **错误处理**:良好的XML处理...
这些测试用例通常包括各种结构的XML文档,以及预期的解析结果,通过运行这些测试可以确保XML解析代码的正确性。 在实际应用中,C++ XML解析可能涉及到错误处理,比如处理非法字符、缺失的结束标签、未闭合的属性等...
6. **工具使用**: 另一个标签“工具”可能指的是在Solaris上用于XML处理的实用工具,如xmllint(libxml2的一部分),用于验证XML文档、格式化输出或者执行XPath查询。掌握这些工具能提高开发效率。 7. **环境兼容性...
6. **测试和调试**:`Test.cpp`是关键的测试部分,用于验证解析器是否能正确解析XML文档,包括正确识别节点、处理嵌套结构和异常情况。 通过分析和运行这个项目,你可以学习到如何在C++环境中处理XML数据,理解XML...
在STM32F107上实现XML解析,首先需要一个轻量级的XML解析库,如pugixml、TinyXML等,这些库已被优化以适应嵌入式系统。在编译时,需要确保选择适合微控制器的编译器,如GCC ARM,同时进行适当的优化设置,如-O2或-O3...
描述中提到的资源库可能是基于C++的XML解析器,用于读取、解析和操作XML文档。由于没有提供具体的库名,我们将讨论一些通用的C++ XML处理方法。 **C++处理XML的方法:** 1. **DOM(Document Object Model)解析**...
【标题】"VC北大天网搜索引擎测试源程序" 指的是一个基于Visual C++ (VC++) 开发的北京大学天网搜索引擎的测试源代码。这个项目可能是为了教学、研究或改进搜索引擎技术而创建的,提供了深入理解搜索引擎工作原理的...