收录日期:2020/10/30 23:52:05 时间:2016/05/12 05:44:44 标签:基础类
将TXMLDocument放到TForm上可以正常使用,但如果动态创建TXMLDocument就出问题了,搞不懂到底为什么。

//正确执行,XMLDocument1放在FORM上:
XMLDocument1->LoadFromFile(L"test.xml");
::ShowMessage(tmp->Encoding);//这儿没错
::ShowMessage(tmp->FileName);

但是,以下动态创建的就错了:
TXMLDocument *tmp = new TXMLDocument("");
tmp->LoadFromFile(L"test.xml");
::ShowMessage(tmp->Encoding);//这儿就错了
::ShowMessage(tmp->FileName);
delete tmp;

TXMLDocument对象在new之后需要什么特殊处理吗?
的确奇怪,就是Encoding不能用,其他的好像都行。 
-----------------------
  CSDN离线浏览器
   往事悠悠
   网事幽幽
-----------------------
Version也无法取啊
哪位知道?我一直解决不了,真郁闷
哪位知道?我一直解决不了,真郁闷
我这样使用它,先在Form1上摆上一个TXMLDocument控件,命名XML,然后就可以动态创建它了,代码如下

XML2=new TXMLDocument("yourxml");
XML2=Form1->XML;
XML2->Active=true;
在使用之前用CoInitialize(NULL)初始化试试。
最后用CoUninitialize()析构


============================================
★仗剑走江湖 小侠令狐虫★
============================================
landy7203(landy) 你这样的代码会造成内存泄漏。呵呵。

XML2=new TXMLDocument("yourxml"); //这里分配了一块内存
XML2=Form1->XML;                  //这里把指针指向了XML,原来的内存就悬空了。



============================================
★仗剑走江湖 小侠令狐虫★
============================================
好象还需要设置XMLDOCUMENT的DOMParser/DOMVendor属性才可以。
这是这个控件的一个BUG,它必须在FORM和DATAMOUDLE中才能正常运行.
哈哈,苦思大半天,终于叫我想到了一个好办法.不敢藏私,公开代码如下:
记得设计TDataModule2 窗口,之中放置XMLDocument1控件,然后在auto-creat forms去掉DataModule2 窗口
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String temstr;
IXMLNode *node;
IXMLNodeList *nodelist=NULL;
int i,endloop;
TXMLDocument *XMLDocument1;
TDataModule2 *DataModule2;
try{

DataModule2= new TDataModule2(this);
XMLDocument1=DataModule2->XMLDocument1;
XMLDocument1->Active=true;
XMLDocument1->LoadFromFile(L"sample.xml");
ShowMessage(XMLDocument1->Encoding);
nodelist=XMLDocument1->ChildNodes;
i= nodelist->Count;
node=XMLDocument1->ChildNodes->FindNode("CSDNHelper");
if(node->GetNodeType()==ntElement){
    Memo1->Lines->Add(node->GetNodeName()+":这是一个母节点");
    nodelist=node->GetChildNodes();
    endloop=nodelist->GetCount();
    for(i=0;i<endloop;i++){
        //Memo1->Lines->Add(nodelist->Nodes[i]->GetNodeName());
        if(nodelist->Nodes[i]->GetNodeType()!=ntElement){
             temstr=node->GetNodeValue();
             Memo1->Lines->Add(temstr);
        }
        else Memo1->Lines->Add(nodelist->Nodes[i]->GetNodeName()+":这是一个母节点");
     }
    }
else{
    temstr=node->GetNodeValue();
    Memo1->Lines->Add(temstr);
    }
}
catch(Exception &exception)   {
ShowMessage(exception.Message);
}
delete DataModule2;
}
_di_IXMLDocument xmlDoc;
xmlDoc = LoadXMLDocument(FileName)
mark

关于ColeDatetime 我学PB的一个亲身感受的问题,PB大侠们看看。 如何在DELPHI中打开其他应用程序,应该有这样的函数吧。 InstallShield Professional做安装程序,出现的问题 admin.dll是什么文件? 框架中有两个View,为什么在我调整窗口大小的时候,这两个View会闪烁不止? 请问如何设置。自动将一个网址添加到IE收藏夹中。不要弹出的那种提示 工程窗口中有工程1和工程2,想要在工程里删去工程1,该怎么做呢 如果男生和女生一起过夜...... 代理软件下载 怎样改变COMMANDBUTTON的形状 请问谁能读取金山词霸的词典文件?我可以支付一定的现金! 有人知道“2009“是什么意思?天长地久还是什么意思? sql server2000 的工具中的全文检索菜单不可能,为何 怎么才能看到我的总积分? 嘿嘿,ifaint(暂时无中文昵称!谢谢!) 名誉损失费!!!实在抱歉!!! 为什么我的程序到了另一台机器上CRecordset类的派生类就不被承认? vc功能不够强大???? 小弟刚开始学习API的一些东西。感觉就是VB里面对API的说明太少了。大家可不可以给一些建议 VC程序打包时,怎么注册控件和动态连接库? 我发现最近没有什么好的帖子啊. 第三控件注册后,打开工程文件时仍然报错找不到该控件,是什么原因,该怎样解决这种问题?谢谢!!! 请问有没有晓得如何获得原始tcp数据包的大虾 在ORACLE中如何显示插入一空字段 全局变量CSocket g_listen由线程A creat,bind,listen,由线程B accept,一定要在线程A处Detach,线程B处Attach吗?为什么里的ex34a不用这样做也行? 想和你交个朋友,把你的QQ写下啊. 紧急求助!解答后立即加分!最后22分送上~~~~~~~快来拿呀 如何在VC中动态制作简单的安装程序?(相当于实现InstallShield的功能) 奇 怪 300 分问题居然没有人能回答........... activeX能进行多重嵌套吗??