c语言xml怎么用,c操作xml文件

本文目录一览:

c语言如何调用xml的接口函数

/***************

?xml version=”1.0″ encoding=”utf-8″?

Cases

  case

    No001/No

    CopyFile src=”C:\test.txt” dest=”D:\test.txt”/CopyFile

  /case

  

  case

    No002/No

    DelFileC:\test.txt/DelFile

  /case

/Cases

*******************/

// 我们用MFC来读取上述xml,代码如下:

 

void 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 ReadCases(MSXML2::IXMLDOMNodeListPtr nodeList)

{

    int ilength = nodeList-Getlength();

    for (int nodeCount = 0; nodeCount  ilength; nodeCount++) {

        MSXML2::IXMLDOMNodePtr nodePtr = nodeList-nextNode();

        _variant_t strNodeName = nodePtr-GetnodeName();

        _variant_t strNodeValue = nodePtr-GetnodeValue();

 

        // 读取case节点下的子节点

        ReadCase(nodePtr-GetchildNodes());

    }

}

void ReadCase(MSXML2::IXMLDOMNodeListPtr nodeList)

{

    CString strLogInfo;

    strLogInfo.Empty();

    CString strNo;              // case编号

    CString strSrcFile;         // 源文件

    CString strDestFile;        // 目标文件

    for (int nodeCount = 0; nodeCount  nodeList-Getlength(); 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; j  pDOMAttrList-Getlength(); 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);

            } 

        }

    }

 // 为了能够让MFC认识MSXML2,我们需要引入相应的dll,代码如下;

#import “msxml4.dll”

如何用C语言实现对xml文件的加密

把xml就当做一个普通的二进制文件

然后随便找一个加密算法

按照字节读入xml文件

然后按照加密算法进行加密转换,输出到目标文件就可以了

简单的

可以用异或方式。

怎么用C语言写一个简单的XML文件

用VC吧,下面有一个例子,你参照下:

void CreateXml()

{

    CoInitialize(NULL);

    // 创建文档

    MSXML2::IXMLDOMDocument2Ptr pXMLDoc = NULL;

    //创建DOMDocument对象

    HRESULT hr = pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));

    if (!SUCCEEDED(hr))

    {

        return;

    }

    // Create the Processing Instruction

    MSXML2::IXMLDOMProcessingInstructionPtr pXMLProc = NULL;

    pXMLProc = pXMLDoc-createProcessingInstruction(“xml”, “version=’1.0′ encoding=’UTF-8′”);

    

    _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(“Cases”), _T(“”));

    // 添加根结点

    pXMLDoc-appendChild(pXMLNodeRoot);

    // 创建并添加下级结点

    MSXML2::IXMLDOMNodePtr pXMLNodeNode= NULL; 

    pXMLNodeNode = pXMLNodeRoot-appendChild(pXMLDoc-createElement(_T(“Case”)));

    // 创建下级元素结点

    MSXML2::IXMLDOMElementPtr pXMLEle = NULL;

    pXMLEle = pXMLDoc-createElement(_T(“CopyFile”));

    // 创建并设置下级结点属性

    MSXML2::IXMLDOMAttributePtr pXMLAttr = NULL;

    pXMLAttr = pXMLDoc-createAttribute(_T(“src”));

    pXMLAttr-nodeTypedValue = “C:\\test.txt”;

    pXMLEle-attributes-setNamedItem(pXMLAttr);

    pXMLAttr = pXMLDoc-createAttribute(_T(“dest”));

    pXMLAttr-nodeTypedValue = “D:\\Test.txt”;

    pXMLEle-attributes-setNamedItem(pXMLAttr);

    // 添加元素结点

    pXMLNodeNode-appendChild( pXMLEle);

    MSXML2::IXMLDOMElementPtr pXMLEle1 = NULL;

    pXMLEle1 = pXMLDoc-createElement(_T(“DelFile”));

    pXMLEle1-appendChild(pXMLDoc-createTextNode(“C:\\test.txt”));

    // 添加元素结点

    pXMLNodeNode-appendChild( pXMLEle1);

  

    // 保存文档

    pXMLDoc-save(_T(“d:\\Test.xml”));

}

 

效果如下:

?xml version=”1.0″ encoding=”UTF-8″ ? 

Cases

    Case

        CopyFile src=”C:\test.txt” dest=”D:\Test.txt” / 

        DelFileC:\test.txt/DelFile 

    /Case

/Cases

为了能够让MFC认识MSXML2,我们需要引入相应的dll,代码如下;

#import “msxml4.dll”

原创文章,作者:YUJR,如若转载,请注明出处:https://www.506064.com/n/146043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YUJRYUJR
上一篇 2024-10-29 18:59
下一篇 2024-10-29 18:59

相关推荐

  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • Python zipfile解压文件乱码处理

    本文主要介绍如何在Python中使用zipfile进行文件解压的处理,同时详细讨论在解压文件时可能出现的乱码问题的各种解决办法。 一、zipfile解压文件乱码问题的根本原因 在P…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29

发表回复

登录后才能评论