错误的XML协议格式,如何处理
答案:3 悬赏:70 手机版
解决时间 2021-07-25 12:40
- 提问者网友:趣果有间
- 2021-07-25 03:32
错误的XML协议格式,如何处理
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-07-25 04:50
//创建DOM,加载XML文档
MSXML::IXMLDOMDocumentPtr pCommandDoc;
pCommandDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
pCommandDoc-> put_async(VARIANT_FALSE);
pCommandDoc-> put_validateOnParse(VARIANT_FALSE);
pCommandDoc-> put_resolveExternals(VARIANT_FALSE);
pCommandDoc-> put_preserveWhiteSpace(VARIANT_TRUE);
pCommandDoc-> load(file.GetBuffer(0));
2、在XML文档中查找指定的结点:
//找到
MSXML::IXMLDOMNodePtr pRootNode=pCommandDoc-> selectSingleNode( "root/record ");
if (pRootNode==NULL)
{
return ;
}
3、得到XML文档中,结点的属性
CString strTemp;
MSXML::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
pRootNode-> get_attributes(&pAttrs);
if (pAttrs==NULL)
{
return;
}
MSXML::IXMLDOMNodePtr pRequestTypeAttr=pAttrs-> getQualifiedItem( "name ", " ");
_bstr_t strRequestType=pRequestTypeAttr-> Gettext();
strTemp=strRequestType.operator char *();
4、得到结点的内容
_bstr_t strVisiPort=pNode-> Gettext();
5、设置结点的内容
HRESULT hr=pNode-> put_text(_bstr_t(m_strGatewayPassword));
6、设置一个属性内容
IXMLDOMAttribute *pa=NULL;
bstr = SysAllocString(L "属性1 ");
pXMLDom-> createAttribute(bstr,&pNode);
var = VariantString(L "strin ");
pa-> put_value(var);
pRoot-> setAttributeNode(pa, &pa1);
第二部分、如何使用SAX解析
概述:SAX使用的是加载式的,将会把XML文档分断,加载到内存中。使用事件通知的方式,来表示找到结点。好像没有写文档的能力吧。它的速度要比DOM快不少。
使用SAX的时候,就需要重载MSXML4.0中的一个接口ISAXContentHandler。
有几个函数重载了之后,当找到了结点之后,就会回调这一些函数
MSXML::IXMLDOMDocumentPtr pCommandDoc;
pCommandDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
pCommandDoc-> put_async(VARIANT_FALSE);
pCommandDoc-> put_validateOnParse(VARIANT_FALSE);
pCommandDoc-> put_resolveExternals(VARIANT_FALSE);
pCommandDoc-> put_preserveWhiteSpace(VARIANT_TRUE);
pCommandDoc-> load(file.GetBuffer(0));
2、在XML文档中查找指定的结点:
//找到
MSXML::IXMLDOMNodePtr pRootNode=pCommandDoc-> selectSingleNode( "root/record ");
if (pRootNode==NULL)
{
return ;
}
3、得到XML文档中,结点的属性
CString strTemp;
MSXML::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
pRootNode-> get_attributes(&pAttrs);
if (pAttrs==NULL)
{
return;
}
MSXML::IXMLDOMNodePtr pRequestTypeAttr=pAttrs-> getQualifiedItem( "name ", " ");
_bstr_t strRequestType=pRequestTypeAttr-> Gettext();
strTemp=strRequestType.operator char *();
4、得到结点的内容
_bstr_t strVisiPort=pNode-> Gettext();
5、设置结点的内容
HRESULT hr=pNode-> put_text(_bstr_t(m_strGatewayPassword));
6、设置一个属性内容
IXMLDOMAttribute *pa=NULL;
bstr = SysAllocString(L "属性1 ");
pXMLDom-> createAttribute(bstr,&pNode);
var = VariantString(L "strin ");
pa-> put_value(var);
pRoot-> setAttributeNode(pa, &pa1);
第二部分、如何使用SAX解析
概述:SAX使用的是加载式的,将会把XML文档分断,加载到内存中。使用事件通知的方式,来表示找到结点。好像没有写文档的能力吧。它的速度要比DOM快不少。
使用SAX的时候,就需要重载MSXML4.0中的一个接口ISAXContentHandler。
有几个函数重载了之后,当找到了结点之后,就会回调这一些函数
全部回答
- 1楼网友:duile
- 2021-07-25 06:40
能具体说下你的问题么,问的不清楚 XML的问题包括很多方面的
上楼的回答也不过是 ctrl+c/v的
- 2楼网友:长青诗
- 2021-07-25 05:32
问人!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯