Vc 读写xml文件二个实例

vc 读写xml文件二个实例

<?xml version="1.0" encoding="gb2312"?>  
<root>
   <device id="10041" name="设备1">  
   <type>13 </type>  
   <typename>保护 </typename>  
   </device> 
</root>

c++代码为:
  coinitialize(null); 
  msxml2::ixmldomdocumentptr pdoc; 
msxml2::ixmldomelementptr xmlroot;

hresult hr = pdoc.createinstance(__uuidof(msxml2::domdocument30));  
if(!succeeded(hr))  
{  
messagebox("无法创建domdocument对象,请检查是否安装了ms xmlparser 运行库!");
}

pdoc->load("f:test.xml");

//找到xml的跟节点
xmlroot=(msxml2::ixmldomelementptr)pdoc->selectsinglenode("//root");

msxml2::ixmldomelementptr childnode,childnode1;

//添加一个新的“device”
childnode=pdoc->createelement((_bstr_t)"device");
childnode->setattribute("id",(const char*)"10042");
  childnode->setattribute("name",(const char*)"设备2");
xmlroot->appendchild(childnode);

  //type节点
childnode1=pdoc->createelement((_bstr_t)"type");
childnode1->puttext((_bstr_t)"14");
childnode->appendchild(childnode1);

childnode1=pdoc->createelement((_bstr_t)"typename");
childnode1->puttext((_bstr_t)"保护2");
childnode->appendchild(childnode1);

pdoc->save("f:test.xml");
  coinitialize(null);

下面看个简单实现
建立一个基于dialog的mfc工程,工程名为operatexml,然后在对话框上添加两个按钮("create"和"getdata"和一个listcontrol
控件(用来显示数据),首先要导入库文件
#import "msxml3.dll"
using namespace msxml2;
主要用来实现xml文件的相关操作,
双击"create"按钮进入代码编写,代码如下:

void coperatexml::onbtncreate()
{
// todo: add your control notification handler code here
::coinitialize(null); //初始化com
msxml2::ixmldomdocumentptr pdoc;
msxml2::ixmldomelementptr xmlroot;
hresult hr = pdoc.createinstance(__uuidof(msxml2::domdocument30));
if(!succeeded(hr))
{
   messagebox("error");
   return;
}
pdoc->raw_createelement((_bstr_t)(char*)"china", &xmlroot);
pdoc->raw_appendchild(xmlroot, null);

msxml2::ixmldomelementptr childnode;
pdoc->raw_createelement((_bstr_t)(char*)"city", &childnode);
childnode->puttext("shanghai");
childnode->setattribute("population", "7000");
childnode->setattribute("area", "2000");
xmlroot->appendchild(childnode);

pdoc->raw_createelement((_bstr_t)(char*)"city", &childnode);
childnode->puttext("beijing");
childnode->setattribute("population", "39999");
childnode->setattribute("area", "3322");
xmlroot->appendchild(childnode);

pdoc->save("d:test.xml");
}

双击"getdata"按钮进入代码编写,代码如下:
void coperatexml::onbtnget()
{
// todo: add your control notification handler code here
m_list.deleteallitems();
msxml2::ixmldomdocumentptr pdoc;
hresult hr = pdoc.createinstance(__uuidof(msxml2::domdocument30));
if(!succeeded(hr))
{
   messagebox("error!");
   return;
}
pdoc->load("d:test.xml");
msxml2::ixmldomelementptr childnode;
childnode = (msxml2::ixmldomelementptr)(pdoc->selectsinglenode("//city"));

msxml2::domnodetype nodetype;
childnode->get_nodetype(&nodetype);

msxml2::ixmldomnamednodemapptr pattrs = null;
msxml2::ixmldomnodelistptr nodelist;
msxml2::ixmldomnodeptr pattritem;
childnode->get_attributes(&pattrs);
childnode->get_childnodes(&nodelist);
long ncount, icount;
pattrs->get_length(&ncount); //获取节点属性个数
nodelist->get_length(&icount); //获取节点个数
for(int i = 0; i < icount; i++) //根据需要可以添加数据到listcontrol中
{
   for(int j = 0; j < ncount; j++)
   {
    pattrs->get_item(j, &pattritem);
    cstring strattrname = (char*)(_bstr_t)pattritem->nodename;
    cstring strattrvalue = (char*)(_bstr_t)pattritem->nodetypedvalue;
    m_list.insertitem(i, strattrname);
    m_list.setitemtext(i, 1, strattrvalue);
   }
}

}

为listcontrol控件绑定一个操作变量

clistctrl m_list;

在oninitdialog中初始化,代码如下:

bool coperatexml::oninitdialog()
{
// todo: add extra initialization here
m_list.insertcolumn(0, "人口");
m_list.insertcolumn(1, "num");
m_list.insertcolumn(1, "面积");
m_list.insertcolumn(1, "num");
crect rect;
m_list.getclientrect(&rect);
int width = (rect.right - rect.left) / 4;
m_list.setcolumnwidth(0, width);
m_list.setcolumnwidth(1, width);
m_list.setcolumnwidth(2, width);
m_list.setcolumnwidth(3, width);
}

时间: 2024-10-26 15:19:41

Vc 读写xml文件二个实例的相关文章

用C#读写XML文件

问题描述 1.用C#读写XML文件2.将XML文件显示在文字框或者表格中求代码,讲解··· 解决方案 解决方案二: 解决方案三: 谢谢····段子鹏解决方案四: 不是用linq,是C#···解决方案五: 读///<summary>///根据节点名称读取PersonalAccountSettings.xml中节点的InnerText值///</summary>///<paramname="nodeName">节点名称</param>///&

asp.net 将一个图片以二进制值的形式存入Xml文件中的实例代码

这篇文章介绍了将一个图片以二进制值的形式存入Xml文件中的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: try    {     int readByte = 0;        //     int bytesToRead = 100;       //数据缓冲区大小     string fileName = "../../WriteXml.xml";   //要打开的文件     //   this.textBox1.Text = string.Empty;   

VC解析XML文件-CMarkup的使用详解_C 语言

VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等.据说tinyXML很好,可能字符集问题,我编译不了.所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便.CMarkup下载地址:http://www.firstobject.com/发现网上有方法很法,我就摘下来了 复制代码 代码如下: //----------UserInfo.xml--------------    xml version="1.0" encoding=&q

读写xml文件的2个小函数

xml|函数 #region 读写xml文件的2个小函数,2005 4 2 by hyc  public void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value  {   XmlDocument xDoc = new XmlDocument();   xDoc.Load(xmlPath);   XmlNode xNod

jquery读取json文件二款实例代码(1/2)

文章为你免费提供二款jquery读取网页特效on文件二款实例代码,这些代码非常实用哦 json文件: [ { "name":"xujun", "sex":"男", "home":"nanjing" }, { "name":"jack", "sex":"男", "home":"be

读写xml文件的2个小函数_XML示例

要利用DOM 来存取XML 文件,你必须将XML 文件连结到HTML 网页上. #region 读写xml文件的2个小函数,2005 4 2 by hyc  public void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value { XmlDocument xDoc = new XmlDocument(); xDoc.L

JSP针对XML文件操作技巧实例分析_JSP编程

本文实例讲述了JSP针对XML文件操作技巧.分享给大家供大家参考,具体如下: XML(Extensible Markup   Language)可扩展标记语言,这个基础知识在早些已经学习过.而这篇教程为什么把它放在J2EE下边呢,因为他也是J2EE的13规范之一,虽然XML是W3C万维网组织联盟指定的,并做了规范,所以说也是一种规范,我们也必须按照规范来,和JDBC,Servlet,Jsp,Ejb等一样的. 前边的文章已经介绍了XML的一些基础知识,主要是用来存储,传输数据的,但是这些数据我们怎

C#写一个读写XML文件的程序

问题描述 写一程序可以修改写入读取XML文件的程序 解决方案 解决方案二:学习一下:解决方案三: 解决方案四:XDocument,XmlDocument,XmlSerializer都可以,看需求了.解决方案五://利用递归获取xml的所有节点(元素也是节点)publicvoidRecurseXml(XmlNoderoot,intindex){if(root==null){return;}if(rootisXmlElement){tbxContent.Text+=root.Name.PadLeft

java学习:使用dom4j读写xml文件

dom4j是一个优秀的开源项目,专用于xml文件的读写,而且支持强大的xpath. 下面的代码演示了对xml文件demo.xml的读写 demo.xml内容: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <address-list> 3 <card name="yangjm" id="1"> 4 <sex>男</sex> 5