社区
ATL
帖子详情
如何将对象保存到一个XML文件
gooore
2010-04-13 09:35:58
求思路,或相关文件信息皆可
...全文
340
11
打赏
收藏
如何将对象保存到一个XML文件
求思路,或相关文件信息皆可
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oldmanzhao
2010-04-22
打赏
举报
回复
可以用TinyXML或者CMarkup,都是轻量级的XML组件,很管用。我们公司的产品界面布局的保存用的就是TinyXML。网上有很多示例,一搜一大把。
redsunxin
2010-04-22
打赏
举报
回复
bool SaveXml(BOOL bFlagSaveAs, CString strPath)
{
CString strFilePath = _T("");
if (bFlagSaveAs )
{
strFilePath.Format(_T("%s%s"),strPath,LANGUAGE_PROJECT_FILENAME);
}
else
{
strFilePath.Format(_T("%s%s"),GetProjectPath(),LANGUAGE_PROJECT_FILENAME);
}
CWaitCursor wati;
CComPtr<IXMLDOMDocument> pDoc;
HRESULT hr = pDoc.CoCreateInstance(__uuidof(DOMDocument));
if (FAILED(hr))
{
pDoc.Detach();
return false;
}
try
{
//设置根节点
CComPtr<IXMLDOMElement> xmlRoot ; //根节点
pDoc->createElement(BSTR(_T("FontTable")),&xmlRoot);
pDoc->appendChild(xmlRoot,NULL);
//Language节点
for (int i = 0 ; i < m_LanguageInfo_ary.GetSize() ; i++)
{
CString strLanID = _T("");
CString strLanHAlign = _T("");
CString strLanVAlign = _T("");
Language_Info info = m_LanguageInfo_ary.GetAt(i);
strLanID.Format(_T("%d"),info.iLanguageID);
strLanHAlign.Format(_T("%d"),info.HAlignStyle);
strLanVAlign.Format(_T("%d"),info.VAlignStyle);
//设置Language节点的属性
CComPtr<IXMLDOMElement> xmlLanElement;
hr = pDoc->createElement(BSTR(LANGUAGE_ITEM_LANGUAGE),&xmlLanElement);
xmlRoot->appendChild(xmlLanElement,NULL);
xmlLanElement->setAttribute(BSTR(_T("Name")) ,CComVariant(info.strLanguageName));
xmlLanElement->setAttribute(BSTR(_T("H_Align")) ,CComVariant(info.HAlignStyle));
xmlLanElement->setAttribute(BSTR(_T("V_Align")) ,CComVariant(info.VAlignStyle));
xmlLanElement->setAttribute(BSTR(_T("H_Offset")) ,CComVariant(info.H_Offset));
xmlLanElement->setAttribute(BSTR(_T("V_Offset")) ,CComVariant(info.V_Offset));
//创建Style节点
CResourceList::iterator it = info.StyleMgr.m_ResourceList.begin();
for (;it!=info.StyleMgr.m_ResourceList.end();it++)
{
CResourceItem* pStyleItem = (*it);
CComPtr<IXMLDOMElement> xmlStyleElement;
hr = pDoc->createElement(BSTR(_T("Style")),&xmlStyleElement);
xmlLanElement->appendChild(xmlStyleElement,NULL);
xmlStyleElement->setAttribute(BSTR(_T("Name")) ,CComVariant(pStyleItem->m_strResourceName));
xmlStyleElement->setAttribute(BSTR(_T("ImageFormat")) ,CComVariant(pStyleItem->m_nType));
xmlStyleElement->setAttribute(BSTR(LANGUAGE_STYLEATTR_RDT) ,CComVariant(pStyleItem->m_strRawDataType));
xmlStyleElement->setAttribute(BSTR(_T("UseTransColor")) ,CComVariant(pStyleItem->m_bUseTranColor));
DWORD dwColor = (DWORD)pStyleItem->m_TranColor;
xmlStyleElement->setAttribute(BSTR(_T("TransColor")) ,CComVariant(dwColor));
xmlStyleElement->setAttribute(BSTR(_T("C2CTbl")) ,CComVariant(pStyleItem->m_CCTableName));
xmlStyleElement->setAttribute(BSTR(_T("C2PTbl")) ,CComVariant(pStyleItem->m_CPTableName));
}
}
hr = pDoc->save(CComVariant(strFilePath));
CFormatXML::Format(strFilePath);
if (FAILED(hr))
{
pDoc.Detach();
return false;
}
pDoc.Detach();
}
catch (CFileException* e)
{
e->Delete();
pDoc.Detach();
return false;
}
return true;
}
sgzwiz
2010-04-22
打赏
举报
回复
为何不直接用MFC的序列化来保存对象
http://it.sohu.com/20040723/n221164254.shtml
gooore
2010-04-22
打赏
举报
回复
有没有简单的例子。
谢谢了
qinwei
2010-04-16
打赏
举报
回复
XML Serial 序列化 使用 MSXML2.dll
jameshooo
2010-04-15
打赏
举报
回复
支持序列化有很多方式,如果你的对象是COM组件,你可以选择实现IPersistStream[Init]、IPersistStorage、IPersistPropertyBag接口之一,如果你的对象是MFC类,可以直接实现序列化,如果是其它类型,序列化过程可以完全自定义
gooore
2010-04-15
打赏
举报
回复
up。。。。
求助
Eleven
2010-04-13
打赏
举报
回复
这个要你自己定义吧,你要定义要将该对象所属类的那些成员写入,如何组织该结结构。。。
jameshooo
2010-04-13
打赏
举报
回复
首先让对象支持序列化
序列化后的二进制数据使用某种编码(比如BASE64)转换成文本,如果本身就是文本则无需此步
把文本保存到XML中的CDATA节中
gooore
2010-04-13
打赏
举报
回复
请问你说的是不是让对象支持IStream接口?
你那里有例子吗?可不可以共享一个。非常感谢
[Quote=引用 1 楼 jameshooo 的回复:]
首先让对象支持序列化
序列化后的二进制数据使用某种编码(比如BASE64)转换成文本,如果本身就是文本则无需此步
把文本保存到XML中的CDATA节中
[/Quote]
XML必知必会:Java、C#、Python多种语言解析XML文档
、XPath节点和XPath语法 第7章 解析XML文档 解析XML文档概述、DOM解析XML、SAX解析XML 第8章 Java语言解析XML DOM4J概述、示例:遍历节点、示例:插入节点、示例:删除节点 第9章 Python语言解析XML ElementTree模块...
JSP请求与响应
对象
的使用入门
内容包括:请求与响应
对象
-1-项目环境搭建、请求与响应
对象
-2-新建login.jsp、请求与响应
对象
-3-编写Acount.java文件、请求与响应
对象
-4-编写CheckAcount.java文件、请求与响应
对象
-5-编写Success.jsp文件、请求与...
XML (报文)基础实战精讲(大神必经之路)
XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准。 XML 指可扩展标记语言...
Tomcat搭建Web项目和
XML文件
解析
你能获得: 理解B/S和C/S架构的优缺点、掌握Tomcat搭建Web服务、Tomcat相关目录与配置、解析XML,服务启动错误问题的解决。 教学服务: 实战驱动远程协助课后答疑教辅资料学习群答疑 讲师介绍: 菩提老师 ...
IDEA版JavaWeb从入门到精通之XML&Tomcat第5天
课程涵盖:Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发...,并在讲解知识点过程中带领大家完成
一个
项目案例...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章