这段程序在vs.net2003的vc7.1编译成功运行。但在win2k vc6.0下在
执行到DOMNodePtr->text=p; 这一句跳出来。
这段程序是要将xml文件里的“b_seq”的值5555改成8888。文件如下
#import "msxml4.dll"
using namespace std;
inline void TESTHR( HRESULT _hr )
{ if FAILED(_hr) throw(_hr); }
int _tmain(int argc, _TCHAR* argv[])
{
MSXML2::IXMLDOMDocumentPtr docPtr;
MSXML2::IXMLDOMNodePtr DOMNodePtr;
//XMLDocument doc;
TESTHR(CoInitialize(NULL));
TESTHR(docPtr.CreateInstance("Msxml2.DOMDocument.4.0"));
// load a document
_variant_t varXml("D:\\test.xml"); // 在这儿改为你的XML文件路径
_variant_t varOut((bool)TRUE);
varOut = docPtr->load(varXml);
if ((bool)varOut == FALSE)
throw(0);
DOMNodePtr=docPtr->selectSingleNode("descendant::b_seq");
char* p = "8888";
_variant_t x(p);
DOMNodePtr->text=p;
docPtr->save(varXml);
return 0;
}
文件如下
<BOOK xmlns:dt="urn:schemas-microsoft-com:datatypes">
<book>
<money>50</money>
<b_seq>5555</b_seq>
</book>
</BOOK
--
FROM 202.115.9.211