以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML工具及XML开发环境 』  (http://bbs.xml.org.cn/list.asp?boardid=7)
----  c++下读写XML文件遇到的几个问题(格式,类型, COM)欢迎指教  (http://bbs.xml.org.cn/dispbbs.asp?boardid=7&rootid=&id=17881)


--  作者:hygol
--  发布时间:5/4/2005 5:33:00 PM

--  c++下读写XML文件遇到的几个问题(格式,类型, COM)欢迎指教

1. 在写xml文件的时候,头部的
    <?xml version="1.0"?>
    这句话是否一定要添加?我能顺利在vc工程中写出xml文件,但是如果用IE打开这个文件,就会导致IE崩溃.我也随之崩溃.是这个原因吗

2. 在写某个节点的属性的时候,我这么写
    eleForm->setAttribute("X", x);
    eleForm->setAttribute("NAME", szName);
    // eleForm的类型是MSXML::IXMLDOMElementPtr
    // szName的类型是const char*
    // x的类型是int
    我发现在写类型int和类型字符串的时候都可以直接用这个方法,但这样做是否规范?
    在读取的时候,无论是字符串还是数字我都是用(char*)(_bstr_t)把读出来的东西转成  字符串,如果有需要转成数字的我在用atoi,是否有简便的方法

3. 一个困扰我太久的问题,我写的vc工程中如果打开一个XML文件,然后再对其保存的话,就会产生crash.我觉得我的问题可能在打开的时候没有正常关闭.但是该怎么正常关闭呢?
大致顺序是这样

//读
     MSXML::IXMLDOMDocumentPtr  pDoc;
     pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
     pDoc->load(_strFileName);
     // 中间若干解析操作读出数据后
     pDoc.Detach()->Release();  // 我尝试的正常关闭的方法,发现不能阻止后面的CRASH,可耻的失败鸟
// 写
     MSXML::IXMLDOMDocumentPtr  pDoc;
     pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
     // 若干创造节点,appendChild等动作后
     pDoc->save(_strFileName);   // 往往当在这里,报错: E_ACCESSDENIED

4.  为了防止大家写出的文件格式不相同,尝试使用.xsd文件也就是schema来检验格式的合法性。VC下如果使用SCHEMA?


我的Email/MSN: hygol@hotmail.com,如果回贴之外你愿意加我的话

谢谢大家 , //bow


--  作者:zhenjun_xie
--  发布时间:5/30/2005 1:21:00 PM

--  
头部是一定要加的
--  作者:LIFEI13579
--  发布时间:6/9/2005 5:44:00 PM

--  
头部的<?xml version="1.0"?>是一定要的,它指明了XML的版本。// 写
     MSXML::IXMLDOMDocumentPtr  pDoc;
     pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
     // 若干创造节点,appendChild等动作后
     pDoc->save(_strFileName);   // 往往当在这里,报错: E_ACCESSDENIED
注意E_ACCESSDENIED这句,因该是访问拒绝,不知道是不是你的API没用好还是怎么的,不清楚了!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms