我刚接触XML,对XML不熟悉,现在没有时间学习。
能否给出代码实现如下功能:
1.创建一个XML文件
2.随便将一个字符串写进去
3.将上一部中的字符串读出来。如能提供VC读写XML的资料更好。
能否给出代码实现如下功能:
1.创建一个XML文件
2.随便将一个字符串写进去
3.将上一部中的字符串读出来。如能提供VC读写XML的资料更好。
解决方案 »
- 急需求一个用VC++做前台,SQL数据库做后台的管理系统
- 动态添加菜单分隔符的问题
- MFC中画图的问题
- 奇怪的鼠标钩子问题,VC编写,VB调用
- 截获文件读写apihook,谁能给个例子程序看看
- 怎么初始化单文档框架的大小和位置
- 请问怎么样得到一个进程的虚拟内存????????????????????????????
- 奇怪,accessxp+vc6.0+odbc居然不能用sql语句查询聚集函数!
- 一个关于控件消息的问题
- 谁给我几个可上传软件的网站地址
- 【困惑】windows程序是如何开始运行的?
- 语音输出 hello:pVoice->Speak(L"hello", 0, NULL),如果 CString str="hello",用str代替hello在Speak函数里应该怎样写才对?谢谢
#import "msxml3.dll" named_guids
using namespace MSXML2; CoInitialize(NULL);
...
//一段写的代码
// 创建文档
MSXML2::IXMLDOMDocument2Ptr pXMLDoc = NULL;
pXMLDoc.CreateInstance("Msxml2.DOMDocument.3.0");
// Create the Processing Instruction
MSXML2::IXMLDOMProcessingInstructionPtr pXMLProc = NULL;
pXMLProc = pXMLDoc->createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
// Insert the Processing Instruction
_variant_t vNullVal;
vNullVal.vt = VT_NULL;
pXMLDoc->insertBefore(pXMLProc, vNullVal);
// 创建根结点
_variant_t varNodeType((short)MSXML2::NODE_ELEMENT);
MSXML2::IXMLDOMNodePtr pXMLNodeRoot= NULL;
pXMLNodeRoot = pXMLDoc->createNode(varNodeType, _T("Root"), _T(""));
// 添加根结点
pXMLDoc->appendChild(pXMLNodeRoot);
// 创建并添加下级结点
MSXML2::IXMLDOMNodePtr pXMLNodeNode= NULL;
pXMLNodeNode = pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Node1")));
pXMLNodeNode = pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Node2")));
// 创建并设置下级结点属性(3个:姓名、性别、年龄)
MSXML2::IXMLDOMAttributePtr pXMLAttr = NULL;
pXMLAttr = pXMLDoc->createAttribute(_T("name"));
pXMLAttr->nodeTypedValue = "王进";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
pXMLAttr = pXMLDoc->createAttribute(_T("sex"));
pXMLAttr->nodeTypedValue = "男";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
pXMLAttr = pXMLDoc->createAttribute(_T("age"));
pXMLAttr->nodeTypedValue = "80";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
// 创建下级元素结点
MSXML2::IXMLDOMElementPtr pXMLEle = NULL;
pXMLEle = pXMLDoc->createElement(_T("file"));
pXMLEle->appendChild(pXMLDoc->createTextNode("Element"));
// 添加元素结点
pXMLNodeNode->appendChild( pXMLEle );
/*
// 创建下级元素结点
MSXML2::IXMLDOMElementPtr pXMLEleSub = NULL;
pXMLEleSub = pXMLDoc->createElement(_T("file"));
pXMLEleSub->appendChild(pXMLDoc->createTextNode("SubElement"));
// 添加下级元素结点
pXMLEle->appendChild( pXMLEleSub );
*/
// 保存文档
pXMLDoc->save(_T("c:\\Test.xml")); ...
CoUninitialize();
#include "stdafx.h"
#include "iostream.h"
#include "msxml.h"
#include "atlbase.h"
#import "msxml.dll" //引入类型库
#include "windows.h"
#include "stdio.h"
#include "string.h"
//#include "afx.h"
#include <iostream.h>
#include "cstringt.h"
//#include "file.h"
#include "atlstr.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif int Exit();
void LoadFromString();
void CreateXML();
//XML文本模板
//_bstr_t XMLTemple="<China><Beijing> -12 </Beijing><Shanghai Weather='Cloudy'> 9 </Shanghai><Beijing>-20</Beijing></China>";
CString XMLTemple="<Connection Action='UploadASMResult'><VehicleInfo License='sd3' LicenseClass='34s' VLTID='21' Mileage='1' RegDate='2000-12-11 12:11:14' OwnerName='12' OwnerAddr='12' BodyColor='343' EngineID='3445' VIN='5434' Cleaners='34'></VehicleInfo><ASMResult TestID='213d' License ='ads2' LicenseClass='231a' StationID ='2da' EISID='2ea' OperatorID='2ea' AmbientTemp='2.5' AmbientHum='2.5' Pressure='1' TestStartTime='2002-12-11 11:12:11' TestEndTime='2004-10-11 11:12:11' AmbientHC='2.2' AmbientCO ='2.2' AmbientNO='2.2' ResidualHC ='2.2' Is5024Done='1' 5024HC = '2.2' 5024CO='2.2' 5024NO = '2.2' 5024Rotary='2.2' 5024Result='2.2' Is2540Done='0' 2540HC='2.2' 2540CO='2.2' 2540NO='2.2' 2540Rotary='2.2' 2540Result='2.2' Result='2' IsGasCapTested='1' GasCapResult='12' OutlookResult='54' AbortReason='66456'></ASMResult></Connection>";
int main()
{
cout << " XML编程--示范程序 " << endl;
CoInitialize(NULL); //初始化COM 环境
cout << "------生成新的XML文本 ------" << endl;
CreateXML();
cout << "------读取已有XML文本 ------" << endl;
LoadFromString();
return Exit();
}
void CreateXML()
{
MSXML::IXMLDOMDocumentPtr pDoc;
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
if(!SUCCEEDED(hr))
{ cout << "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!" << endl;
Exit();
}
MSXML::IXMLDOMElementPtr pDocElement=pDoc->createElement("China");
pDoc->appendChild(pDocElement);
cout << "生成树根:\n" << pDoc->xml << endl;
MSXML::IXMLDOMElementPtr pNewChildElement,pNewChildElement1;
pNewChildElement=pDoc->createElement("Beijing");
pNewChildElement->Puttext("-11");
pDocElement->appendChild(pNewChildElement);
cout << "添加节点:\n" << pDoc->xml << endl;
pNewChildElement=pDoc->createElement("Shanghai");
pNewChildElement->Puttext("9");
pNewChildElement->setAttribute("Weather",_variant_t("Cloudy"));
pDocElement->appendChild(pNewChildElement); pNewChildElement=pDoc->createElement("DEFINE");
pNewChildElement1=pDoc->createElement("ID"); pNewChildElement->appendChild(pNewChildElement1);
pDocElement->appendChild(pNewChildElement);
cout << "再添加节点:\n" << pDoc->xml << endl; char buf[1024];
memset(buf,0,1024);
strcat(buf,pDoc->xml);
//sprintf(buf,"%s",pDoc->xml);
FILE *p;
p=fopen("xxx.xml","w");
fwrite(buf,1,strlen(pDoc->xml),p);
fclose(p); pDocElement->removeChild (pNewChildElement);
cout << "把刚加入的节点删除:\n" << pDoc->xml << endl;
} void LoadFromString()
{
MSXML::IXMLDOMDocumentPtr pDoc;
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
if(!SUCCEEDED(hr))
{
cout << "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!" << endl;
Exit();
}
_bstr_t name;
pDoc->loadXML((_bstr_t)XMLTemple);
cout << "读取结果:\n" << pDoc->xml << endl;
MSXML::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement();
_variant_t var; MSXML::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode("Connection");
var=pElement->getAttribute("Action");
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.bstrVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
cout<<var.cVal<<endl;
//pDocElement->removeChild(pElement); MSXML::IXMLDOMNodeListPtr pLists = pDocElement->selectNodes("ASMResult");
long n = pLists->Getlength();
for (int i = 0; i < n; i++)
{
MSXML::IXMLDOMElementPtr pDocElement = pLists->Getitem(i);
cout << pDocElement->Gettext() << endl;
}
cout << "定位删除Shanghai节点:\n" << pDoc->xml << endl;
cout << "保存结果 Save .....(模拟而已)" << endl;
cout << "\n 好了,就这么简单" << endl;
} int Exit()
{ getchar();
return 1; }