三九宝宝网宝宝教育教学论文

C怎么运用XML文件要自己写XML文件的解析的吗谢谢高手回答

02月09日 编辑 39baobao.com

[用C语言读取一个文件中的内容如何对不同的行进行解析比如是配]很简单的 配置文件 微软有抓们的一套解析函数 INI文件是Windows系统中一类比较重要的文件,通常用来存放系统或者应用程序的配置信息,以方便系统或者应用 程序在初始化时再次读...+阅读

001 002 C:\test.txt 我们用C++来读取上述xml,代码如下: void CTestToolsDlg::ReadXml(CString strXmlPath) { MSXML2::IXMLDOMDocumentPtr pDoc; ::CoInitialize(NULL); HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if (!SUCCEEDED(hr)) { MessageBox(_T("创建DOMDocument对象失败。\n请检查运行环境"), _T("错误"), MB_ICONERROR); return; } // 读取xml pDoc->put_async(VARIANT_FALSE); VARIANT_BOOL bhr = pDoc->load((_variant_t)strXmlPath); if (bhr != VARIANT_TRUE) { MessageBox(_T("无法正确读取xml文件"), _T("错误"), MB_ICONERROR); return; } // 根节点取得 MSXML2::IXMLDOMElementPtr root = pDoc->documentElement; // 取得根节点的名字 _variant_t strRootName = root->nodeName; _bstr_t wstrRootName(strRootName.bstrVal); MSXML2::IXMLDOMNodeListPtr nodeList = root->GetchildNodes();//cases // 解析cases的子节点 ReadCases(nodeList); } void CTestToolsDlg::ReadCases(MSXML2::IXMLDOMNodeListPtr nodeList) { int ilength = nodeList->Getlength(); for (int nodeCount = 0; nodeCountnextNode(); _variant_t strNodeName = nodePtr->GetnodeName(); _variant_t strNodeValue = nodePtr->GetnodeValue(); // 读取case节点下的子节点 ReadCase(nodePtr->GetchildNodes()); } } void CTestToolDlg::ReadCase(MSXML2::IXMLDOMNodeListPtr nodeList) { CString strLogInfo; strLogInfo.Empty(); CString strNo; // case编号 CString strSrcFile; // 源文件 CString strDestFile; // 目标文件 for (int nodeCount = 0; nodeCountGetlength(); nodeCount++) { MSXML2::IXMLDOMNodePtr nodePtr = nodeList->nextNode(); _variant_t strCaseNodeName = nodePtr->GetnodeName(); _variant_t strCaseNodeValue = nodePtr->Gettext(); BSTR bStrTemp = strCaseNodeName.bstrVal; CString strTemp = CString(bStrTemp); SysFreeString(bStrTemp); CString strNodeName = strTemp; // 节点的值,如何取得? if (0 == strNodeName.CompareNoCase(_T("NO"))) { strNo = (BSTR)strCaseNodeValue.pbstrVal; // 取得的值可以打印出来 printf(strNo); } // 节点有属性值,该怎么处理? else if (0 == strNodeName.CompareNoCase(_T("CopyFile"))) { strSrcFile.Empty(); strDestFile.Empty(); // 取得节点的属性值 MSXML2::IXMLDOMNamedNodeMapPtr pDOMAttrList= nodePtr->Getattributes(); for (int j = 0; jGetlength(); j++) { MSXML2::IXMLDOMNodePtr pDOMAttr= pDOMAttrList->Getitem(j); // 取得源文件路径 if (CompareNoCase((char*)pDOMAttr->GetnodeName(), _T("src"))) { strSrcFile = pDOMAttr->GetnodeTypedValue(); // 取得目标文件路径 } else if (CompareNoCase((char*)pDOMAttr->GetnodeName(), _T("dest"))) { strDestFile =pDOMAttr->GetnodeTypedValue(); } CopyFile(strSrcFile, strDestFile, FALSE); } else if (0 == strNodeName.CompareNoCase(_T("DelFile"))) { strDestFile.Empty(); strDestFile = CString((BSTR)strCaseNodeValue.pbstrVal); DeleteFile(strDestFile); } } }为了能够让C++认识MSXML2,我们需要引入相应的dll,代码如下; #import "msxml4.dll"

以下为关联文档:

如何用Java或C语言解析二进制文件为文本文件在学习C语言fopen()函数后,知道它的第二个参数是标志字符串。如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。 那么什么是文本文件,什么是二进制文件...

在C语言中怎么建立二进制文件#include <stdio.h> struct stu { char name[10]; int num; int age; char addr[15]; }boy,*qq; void main() { FILE *fp; char ch; int i=1; qq=&boy; stu SStu; { strcpy(...

C语言中定义一个结构体如何在不同的 C文件中使用比如三个.c文件一个.h文件 1. c 2.c 3.c 4.h 这三个头文件都引用4.h include<4.h> 4.h中定义一个结构体类型struct test{}; 1.c中定义一个该结构体类型的全局变量struct tes...

建筑工程索赔文件怎么写它是承包商向业主索赔的正式书面材料,也是业主审议承包商索赔请求的主要依据,它包括索赔信、索赔报告、附件三部分。 (1)索赔信它是一封承包商致业主或其代表的简短信函,应提纲挈...

c语言程序文件的开发环境有限制吗1. C++语言有很强的跨平台性,只要不使用那些专门面向具体系统的扩展则不受系统限制。但是如果一个程序是面向windows gui的程序则只能在windows系统上使用。 2. 可以。目前几...

怎样用C语言保存一个文件在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。 在C...

求C语言大神讲解怎么保存文件这个我们一般用一个txt文件保存,这里用到的就是文件存储方面的知识#include//文件的录入void save_file(struct node* p){ FILE *fp; char *filename = "1.txt";//文件名称 fp=...

如何使用c解析xmlxml文件内容 - - - 7 0 1 93 阿富汗 Afghanistan 阿富汗 アフガニスタン ?????? ア AFuHan 0 1 - 8 0 2 355 阿尔巴尼亚 Albania 阿尔巴尼亚 アルバニア ア AErBaNiYa 0 1 运行结...

C如何解析XML像这样的XML怎么解析DataSet ds = new DataSet(); ds 。ReadXml("你的xml文件路径");用DataSet的ReadXml方法可以将XML里的数据以DataTable的形式读取到DataSet中也可以用 XmlDocument xml = new Xml...

推荐阅读
图文推荐