完善自己的html parse
说来惭愧,我发现自己写的那个html parse过于理想化,解析xml还差不多,想解析现今的html,估计是不大可能的,所以我把代码重写了一遍,数据结构改成双向链表,这样解析速度更快,最大程度地对html进行容错处理,试验时发现的确可以解析普通html字符串,不需要再严格符合那个xhtml标准了。而且在链式调用的传递参数上不需要再传入dom类型的参数,这样写起来就更加简便了。
好了,废话不多说,看代码:
#include<iostream>
using namespace std;
class node;
class dom;
class nodecollect{
private:
node *n;
int length;
public:
nodecollect();
~nodecollect();
int getlength();
void add(node *nn);
node* item(int i);
};
class node{
private:
int start;
int len;
char name[20];
public:
char* nodehtml();
char* innerhtml();
char* outerhtml();
char* innertext();
char* getattr(char* str);
char* tagname();
void setname(char *str);
node* getparent();
nodecollect* getchild();
node* getnext();
node* getprevious();
node *next;
node *previous;
void setstart(int i);
void setlen(int i);
int getstart();
int getlen();
dom *d;
};
class dom{
private:
char *text;
node *start;
node *end;
int count;
int parse(char *s);
public:
~dom();
char *gettext();
void load(char *str);
node* getitem(int i);
int getcount();
node *getbyid(char* id);
nodecollect* getbytagname(char *tagname);
};
void dom::load(char* str){
start=0;
end=0;
count=0;
int l=strlen(str);
text=new char[l+1];
strcpy(text,str);
char *t=text;
parse(t);
}
int dom::getcount(){
return count;
}
char *dom::gettext(){
return text;
}
node* dom::getitem(int i){
node* n1=start;
while(i--){
&
相关文档:
CSDN博客:http://writeblog.csdn.net/PostList.aspx
方法一:用记事本打开index.htm,替换:10pt ---> 12pt,保存后,用IE打开此htm,ctrl+a--ctrl+c,粘贴到博客就行了!
方法二:在csdn发表文章时,选择【图像】后面的【HTML】按钮,再把index.htm源码粘贴上去,什么也不用改动! ......
有时页面需要获得用户浏览器的高度才能确定内容显示在哪里,代码
<div style="position:absolute; left:0; top:expression(document.body.clientHeight/2-document.body.clientHeight/4)">
</div>
中,expression(document.body.clientHeight/2)即为获得浏览器高度再除以2 ......
最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。
我们知道,PHP读取MYSQL动态显示,在访问量大的情况下,会有很多性能问题,如果租用别人的虚拟主机,则会因为CPU消耗过多而被限制CPU,导致网 ......
HTML和HTM文件在一次杀毒后都变成了可执行文件图标的样式。在网上搜索了若干方法都不得其解。最后查了一下资料,原来是注册表中有个可有可无的键值的存在造成的,这个就是:
HKEY_CLASSES_ROOT\htmlfile\ShellEx\lconHandler
删除lconHandler后,所有HTML和HTM文件都变成了未知文件的样式,还需要再到“控制面板&rdq ......
修改 checked 属性
var sex = '${entity.sex}';
if(sex == '男')
{
//document.all.sexCk1.checked=true; 这种火狐不支持
&nbs ......