c语言 xml怎么发送数据啊?请教小

c语言 xml怎么发送数据啊?请教小,第1张

其实就是把数据放到xml里面,然后发送xml文件。绝含缓

不知道你有并模没有安装优酷客户端,他就是这么做的。

很偶然的被我看到了,打开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" /> 

        <DelFile>C:\test.txt</DelFile> 

    </Case>

</Cases>

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

#import "msxml4.dll"

gsoap中想要输出多个不同类型的参数只能使用结构体的方稿腊高法,

自定义一个结构局者体,在结构体中定义想要的输出的类型和参数,在当然必须在头文件中定义

然后用soapcpp2工具编译此头文件会生成相关的soap_out_TYPE,soap_put_TYPE,soap_serialize_TYPE等函数

实际上这几个函数的实现也是调用了相关类型的函数实现的,比如结构体中包含字符串,那么soap_serialize_TYPE就会调用soap_serialize_string函数键尺实现

如下代码

[cpp] view plain copy

struct LogInfo loginfo={"哈哈",1}

soap_serialize_LogInfo(soap,&loginfo)

soap_put_LogInfo(soap, &loginfo, "logs", NULL)

页面会输出:

[html] view plain copy

<?xml version="1.0" encoding="UTF-8"?>

<logs>

<content>hehe</content>

<id>1</id>

</logs>

多次调用soap_out_LogInfo函数

[cpp] view plain copy

soap_serialize_LogInfo(soap,&loginfo)

soap_out_LogInfo(soap, "logs",1, &loginfo, NULL)

soap_out_LogInfo(soap, "logs",2, &loginfo, NULL)

页面会输出

[html] view plain copy

<?xml version="1.0" encoding="UTF-8"?>

<logs id="_1">

<content>hehe</content>

<id>1</id>

</logs>

<logs id="_2">

<content>hehe</content>

<id>1</id>

</logs>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12395149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存