新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML网站展示,XML源代码,XML编程示例。 本版仅接受原创、转贴、网站展示,具体的技术交流请前往各相关版块。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML源码及示例(仅原创和转载) 』 → 怎样才能编写一个XML的编辑器呢?哪位大虾指点一下 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5935 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 怎样才能编写一个XML的编辑器呢?哪位大虾指点一下 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     testoff 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:65
      门派:XML.ORG.CN
      注册:2005/2/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给testoff发送一个短消息 把testoff加入好友 查看testoff的个人资料 搜索testoff在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看testoff的博客楼主
    发贴心情 怎样才能编写一个XML的编辑器呢?哪位大虾指点一下

    怎样才能编写一个XML的编辑器呢?哪位大虾指点一下
    1.问题陈述
    设计一个关于XML文档存取的类库,并在此基础上给出一个XML文档的交互式编辑器。

    2.基本要求
    内部要求:XML文档可一次全部读入内存后处理。按树的方式处理XML文档。至少设置文档类、XML元素类等。提供基本的树结构访问接口。对XML文档的一切其它操作(如编辑器功能)都要求在类库的基础上进行;
    外部功能:
    类库功能:具体的功能要求参阅后面的“设计提示”。
    编辑器功能:在非Windows(MS, X系列)环境下建立一个小型的全屏幕编辑器,支持以树的形式编辑XML文档。具体的功能包括:
    修改:修改任一成份(文本、标签、属性等)的内容;
    插入:在当前位置上插入对应的成份(元素、文本、属性等);
    删除:删除当前位置上的对应的成份(元素、文本、属性等);
    查找功能:可按属性值、标签名、文本内容定位;
    文件操作:支持创建新文档(空)、文档保存(到磁盘)、读磁盘文档等
    编辑交互:支持简单的字符模式的菜单、对话框;

    3.增强要求
    内部要求:XML文档很大时,不一次全部读入内存,而采用动态分块读入;
    外部功能:更完善的类库功能和编辑器功能。

    4.扩展要求
    外部功能:支持比较友好的菜单、对话框等屏幕元素,支持鼠标、中文(自建中文系统)。

    5.设计提示
    A)对象体系 (见图B4)
    B)类形式参考
    (1) 树结点类TTreeNode: 多叉树结点,其仅与树结构有关。其它种类结点均由此结点派生。主要包括下列成员:
    Generation:整数,为本元素在所在树中的层号(根层号为1);
    Parent:xiTreeNode型,读写型,指出该结点在树中的父结点;
    Children:xiTreeNodeList型,指出该结点在树中的各个儿子;
    (2)标记(标签)类:该类由TTreeNode派生而来,描述文档树中的标记,即一对尖括号之间的部分。
    主要包括下列成员:
    Name:XAM字串型,是标记的名称;
    AttrList:属性表型,是标记对应的各属性构成的集合(表);
    Type:枚举型,为标记的类型,即指出是非空标记还是空标记;

    (3)XML元素类xiElement:用于描述XML文档中的元素,它代表某一完整元素,包括该元素的下属的各元素,因此相当于一棵(子)树。提供了对子树的各种访问方法。
    主要包括下列成员:
    Root:根指示器;
    Content:元素内容;
    ClusterDescendants(travMode,startLevel, endLevel,elemName,attrName,attrvalue,elemText):遍历结果存引用集的条件遍历,即本元素的各指定的直系后代(儿子,及儿子的后代),按指定的次序,组成一个引用集。
    ClusterAncestors(startLevel,endLevel,elemName,attrName,attrvalue,elemText):将本元素的各指定的直系前辈(父亲及父亲的前辈),组成一个引用集。
    ClusterJuniors(travMode,startLevel,endLevel,elemName,attrName,attrvalue,elemText): 类似于ClusterDescendants,不同之处是,ClusterDescendants涉及的元素是本对象的各直系后代(儿子,及儿子的后代),而ClusterJuniors涉及的是本对象的所有后代(层号大于本对象的各元素)。另外,这里的遍历次序是按从树根开始的;
    ClusterSeniors(travMode,startLevel,endLevel,elemName,attrName,attrvalue,elemText):类似于ClusterAncestors,不同之处是,ClusterAncestors涉及的元素是本对象的各直系前辈(父亲及父亲的前辈),而ClusterSeniors涉及的是本对象的所有前辈(层号小于本对象的各元素)。另外,这里的遍历次序是按从树根开始的;
    ClusterCousins (elemName,attrName,attrvalue="*",elemText="*"):将本元素的各指定的兄弟及堂兄弟,组成一个引用集;
    ClusterAttribute(fieldDelimiter,travMode,startLevel,endLevel,elemName,attrName): 按指定的方式遍历本元素对应的子树,将遍历到的元素的属性名与值存入一个新引用集;
    ClusterText(travMode,startLevel,endLevel,elemName,attrName,attrvalue):按指定的方式遍历本元素对应的子树,将遍历到的元素对应的文本存入一个新引用集;
    Insert(elem,beforeNo):为本元素插入一棵子树(元素);
    Delete(idxSelector):删除本元素的若干棵子树(元素);
    Replace(idxSelector, elem):用给定的元素替换本元素中的指定元素;
    SaveAsXMLDocFile(docFile):将本元素(含其各子元素)读出,转换为标准的XML格式,存入指定的文件中;
    SaveAsXMLDoc(in xiXMLStr docStr):将本元素(含其各子元素)读出,转换为标准的XML格式,存入指定的字符串中;
    LoadFromXMLDocFile(docFile):将指定的XML文档文件读出,将其转换为一个xiElement型元素,代替本元素:
    LoadFromXMLDoc(docStr):将指定的XML文档字符串转换为一个xiElement型元素,代替本元素;


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/2/12 17:20:00
     
     testoff 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:65
      门派:XML.ORG.CN
      注册:2005/2/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给testoff发送一个短消息 把testoff加入好友 查看testoff的个人资料 搜索testoff在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看testoff的博客2
    发贴心情 
    救救我。。。。。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/2/12 17:22:00
     
     XML-Lightuser 帅哥哟,离线,有人找我吗?魔羯座1983-1-11
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:105
      门派:XML.ORG.CN
      注册:2005/1/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给XML-Lightuser发送一个短消息 把XML-Lightuser加入好友 查看XML-Lightuser的个人资料 搜索XML-Lightuser在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看XML-Lightuser的博客3
    发贴心情 
    昏,我与楼主的毕业设计题目一样,也是设计XML编辑器,但是好象,楼主比我的还要复杂的多
    我也是初学者,同情
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/29 2:07:00
     
     iand 帅哥哟,离线,有人找我吗?天秤座1985-10-4
      
      
      等级:大一(猛啃高等数学)
      文章:26
      积分:162
      门派:XML.ORG.CN
      注册:2005/6/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给iand发送一个短消息 把iand加入好友 查看iand的个人资料 搜索iand在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看iand的博客4
    发贴心情 
    学了 但不知道

    ----------------------------------------------
    亲人不亲 我何以亲 世人皆人 情我皆亲

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/5 18:06:00
     
     Dannyzhu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:109
      门派:XML.ORG.CN
      注册:2005/6/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Dannyzhu发送一个短消息 把Dannyzhu加入好友 查看Dannyzhu的个人资料 搜索Dannyzhu在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Dannyzhu的博客5
    发贴心情 
    我也正在做这个编译器,愁啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/8 10:57:00
     
     widewave 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:88
      门派:XML.ORG.CN
      注册:2006/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给widewave发送一个短消息 把widewave加入好友 查看widewave的个人资料 搜索widewave在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看widewave的博客6
    发贴心情 
    使用C++STL
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/5/15 9:27:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML源码及示例(仅原创和转载) 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/14 10:24:20

    本主题贴数6,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    175.781ms