webbrowser读取xml源文件问题

qianyong325 2008-04-16 11:08:37
我navigate一个url,返回的是xml文件,在DocumentComplete处理的时候用get_innerHTML得到的是处理过的html内容,用get_innerText的到的也和xml文件有所不同,在ie里右键菜单查看源文件是可以看到原始xml文件的内容的。请问应该怎么做。
用get_innerText会在xml文件前面有个"-" ,如果是<a></a>中间不写内容,会变成<a/>这样的东西。

急用,分不是问题
...全文
618 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianyong325 2008-04-17
  • 打赏
  • 举报
回复
恩,只有IDispatch接口?那就是主要应用于脚本的,呵呵。 下午下班前结贴了。谢谢
jameshooo 2008-04-17
  • 打赏
  • 举报
回复
其实这个接口就是AJAX中的httpXmlRequest对象,IE在window对象中已经嵌入了这个对象,直接用于AJAX,所以C++的调用方式跟脚本是完全一样的。
jameshooo 2008-04-17
  • 打赏
  • 举报
回复
如果使用异步,load会马上返回。在load之前你要设置一个回调(IDispatch),put_onreadystatechange(VARIANT)或者put_ondataavailable(VARIANT)都可以,一般用第二个,VARIANT参数就是你的回调IDispatch,当数据返回并解析好后,或者加载状态发生改变的时候会调用对应的回调。
qianyong325 2008-04-17
  • 打赏
  • 举报
回复
我想问楼上的,url返回给我的是一个xml文件,怎么能在navigate之前得到。其实用jameshooo 的方法也可以,抛弃webbrowser。另外用webbrowser也可以,问题我已经解决了。

现在向jameshooo 提问:
CoCreateInstance --> IXMLDOMDocument
IXMLDOMDocument::put_async(VARIANT_FALSE or VARIANT_TRUE)
IXMLDOMDocument::load(url)
IXMLDOMDocument::selectSingleNode("//html") --> IXMLDOMElement
IXMLDOMElement::get_xml / text

如果put_async设置的是异步。那么load是不是会立刻返回? 那么当实际的xml返回以后是有连接点通知吗?如果有,是什么呢?

上面回答问题的只有你的还算是沾点边,这个问题也解决了100分全是你的。

另外,很久没有来csdn技术区了,发现星星的质量真不怎么样。 我的问题是翻以前的帖子,蒋老大有过解决方法的。各位有兴趣可以自己去找找!
ToperRay 2008-04-17
  • 打赏
  • 举报
回复
你要在navigate之前得到才可以。
jameshooo 2008-04-16
  • 打赏
  • 举报
回复
不要使用浏览器控件,可以直接使用msxml2.DOMDocument组件来加载XML文档:
CoCreateInstance --> IXMLDOMDocument
IXMLDOMDocument::put_async(VARIANT_FALSE or VARIANT_TRUE)
IXMLDOMDocument::load(url)
IXMLDOMDocument::selectSingleNode("//html") --> IXMLDOMElement
IXMLDOMElement::get_xml / text
vcPlayer 2008-04-16
  • 打赏
  • 举报
回复
这种方法只能取到常规的网页内容。有些网页是经过加密处理或者说是不允许这样来取的。LZ尝试一下SOCKET模拟HTTP请求包看能否得到网页的真实内容?
qianyong325 2008-04-16
  • 打赏
  • 举报
回复
我就是这样写的,用get_outerHTML取得的是html,并不是原始的xml,用get_outerText取得的也不是。上面已经做了说明了啊
Kudeet 2008-04-16
  • 打赏
  • 举报
回复
SHDocVw::IWebBrowser2Ptr spBrower;
get_Document

IHTMLDocument2 *document = spBrower->get_Document(..);
IHTMLElement *body;

BSTR title,source,content;

document->get_title(&title); //取title
document->get_body(&body);
body->get_outerHTML(&source);//取源程序
body->get_outerText(&content);//取文本


基本的代码是这样,试试看
scq2099yt 2008-04-16
  • 打赏
  • 举报
回复
up
qianyong325 2008-04-16
  • 打赏
  • 举报
回复
用webbrowser就不行吗?有时候获得的是html,并且要在borwser上面显示的,用webbrowser会比较方便的。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧