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

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 把数据转换成XML格式的好处 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 24491 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 把数据转换成XML格式的好处 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     小鞋子 帅哥哟,离线,有人找我吗?
      
      
      威望:6
      头衔:大法師
      等级:大二期末(Java考了96分!)
      文章:353
      积分:958
      门派:XML.ORG.CN
      注册:2003/12/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给小鞋子发送一个短消息 把小鞋子加入好友 查看小鞋子的个人资料 搜索小鞋子在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看小鞋子的博客楼主
    发贴心情 把数据转换成XML格式的好处

       我们常常会碰到需要处理以各种格式(从以逗号或者制表符做分隔符的文件到更负载的格式)保存或者传输的数据的情况,对每一种格式你都需要对应的解析器(parser)。这一缺点减缓了开发进度,而且可能会导致错误的发生。一个解决方案就是把常用格式的数据转化成XML文档,然后对它进行保存、处理或者转换成其它格式。

    一个实例

    现在已经有好多种实现在软件内部或者软件之间进行数据保存、导出、导入以及传输功能的数据格式。最常见的是定界格式(delimited format),如逗号或者制表符分隔数据格式以及定长数据格式。假设我们有一个地址簿程序,该程序提供把数据导出成逗号分隔以及固定长度这两种格式的功能。

    在逗号分隔格式中,用逗号来分隔同一个数据记录中的不同字段,如清单A所示。而在固定长度数据格式中,记录的每一个字段都应该有一个标准长度。清单B给出了一个固定长度格式的地址簿。


    创建XML文档

    现在,让我们解析输入数据并把它转换成XML文档。XML文档(即org.w3c.dom.Document)是全部文档对象模型(DOM)的原始数据类型,并且它提供了对文档数据的访问。

    你可以用执行buildDocument(InputStream is)方法来创建与你的数据对应的文档,如代码清单C所示。该方法逐行读取输入数据流,并根据给定格进行来逐行分析。

    如果你想解析分界格式数据,你需要创建构造函数为PlainTextToXmlFormatter(String[ ] colName,String delim)的类的实例,其分界符可以是任何字符串。在固定长度格式的情况下,你应该使用第二种构造函数PlainTextToXmlFormatter(String[ ] colName,int[ ] colLen),它的一个参数为字段长度数组。在我们所给的地址簿例子中,各字段的长度分别为10、10、30以及10个字符。参数colName是保存了目标数据记录的名字的数组,在我们给出的这个例子中,名字分别为名(firstName)、姓(lastName)、email以及电话号码(phone)。

    把数据行转换为数据符号的实际解析过程也就是执行getStringArray(String read,String delim)或者parseFixedLengthMessage(String read,int[ ] colLen)方法的过程。其返回值是一个String型数组,这个数组是上述两个方法把给定输入进行分解而得来的。如果数据格式不对,就会抛出一个例外并且终止解析过错。调用setSkipError(true)方法就可以忽略例外并完成数据解析过程。调用这个方法可以防止抛出例外,但它仍允许程序向错误输出流打印错误信息。

    当行被解析成标记后,它们作为XML文档的元素而加入到XML文档之中。放入到元素之中的每一行记录都有一个默认的名字line,你也可以调用setDataLineName()来指定名字。每一个数据记录都是一个列元素,列元素的名字由相应的类构造函数提供,子元素加到行元素之中。

    在输入数据完全读取之后,你就得到了一个有效的XML文档,你可以进一步处理这个文档。现在,由于数据是按众所周知的树状结构来组织的,因此处理它非常简单。例如,你可以把这个文档送交给第三方,只要第三方知道该文档的文档类型定义(Document Type Definition ,DTD),那么他就可以很容易的处理文档了。你还可以调用writeDocument(Document doc,OutputStream osOut)方法来保存这个文档。代码清单D就给出一个把XML文档保存到一个文件中的例子。


    用XSLT转换来查看数据

    你还可以把XML数据转换成其它格式,并用不同的视图来表示其内容。最简单的方法就是使用XSLT转换,它提供了一种强大的面向树的转换语言实现,可以把使用一种词汇表的XML实例转换成简单文本、HTML或者使用其它词汇表的XML。

    对给定的XML输入,你可以用XSLT语言来创建你所期望的输出。例如,通过执行transformData(InputStream xmlIn,InputStream xslIn,OutputStream transfOut),你就可以把XML数据转换成一个HTML文档。代码清单E提供了XSLT转换的一个例子,而清单F给出了地址簿条目的HTML视图。


    简化对数据的管理

    在本文中,我们通过分析PlainTextToXmlFormatter类而学会了如何把常用格式数据转换成XML文档。我们还看到了如何借助于XSLT转换而用不同的视图来表示XML文档。当你需要处理各种格式的数据时,采纳上述技术或许就就是一个好的解决方案,从而节省了你的宝贵时间并减少了出错的可能性。


       收藏   分享  
    顶(1)
      




    ----------------------------------------------
    本人只會一點點XML.
    和ASP.以及FLASH.其它都不太懂.

    大家多多指教.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/2/19 9:22:00
     
     robin21_cn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:13
      积分:111
      门派:XML.ORG.CN
      注册:2005/3/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给robin21_cn发送一个短消息 把robin21_cn加入好友 查看robin21_cn的个人资料 搜索robin21_cn在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看robin21_cn的博客2
    发贴心情 
    xiexie 顶上啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/20 15:21:00
     
     比尔熊 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:67
      门派:XHTML.ORG.CN
      注册:2005/10/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给比尔熊发送一个短消息 把比尔熊加入好友 查看比尔熊的个人资料 搜索比尔熊在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看比尔熊的博客3
    发贴心情 
    能介绍一下, XML在网页制作中的好处吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/20 19:38:00
     
     Roham 帅哥哟,离线,有人找我吗?射手座1983-12-18
      
      
      等级:大一新生
      文章:6
      积分:84
      门派:XML.ORG.CN
      注册:2005/10/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roham发送一个短消息 把Roham加入好友 查看Roham的个人资料 搜索Roham在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roham的博客4
    发贴心情 
    学习,又上了一个台阶
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/29 13:32:00
     
     skulldownz 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:57
      门派:XML.ORG.CN
      注册:2005/7/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给skulldownz发送一个短消息 把skulldownz加入好友 查看skulldownz的个人资料 搜索skulldownz在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看skulldownz的博客5
    发贴心情 
    能像我这样说吗?
    XML就是个文本化的数据...

    但是我看到他不好的一面...就是他不是个数据库..而是一张树表...?
    有人能帮忙解一下吗?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/29 16:40:00
     
     hqh200023607 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:134
      门派:XML.ORG.CN
      注册:2005/11/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hqh200023607发送一个短消息 把hqh200023607加入好友 查看hqh200023607的个人资料 搜索hqh200023607在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hqh200023607的博客6
    发贴心情 
    又学习一些新的东西,但不知道自主你在文中所说的代码C、D、E、F之类的在什么地方啊,到哪里去找啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/10 20:04:00
     
     78wang 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:114
      门派:XML.ORG.CN
      注册:2005/11/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给78wang发送一个短消息 把78wang加入好友 查看78wang的个人资料 搜索78wang在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看78wang的博客7
    发贴心情 
    问一下,我的HTML基础也不怎么样呢....可以不可以一下子就学XML
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/11 1:51:00
     
     78wang 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:114
      门派:XML.ORG.CN
      注册:2005/11/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给78wang发送一个短消息 把78wang加入好友 查看78wang的个人资料 搜索78wang在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看78wang的博客8
    发贴心情 
    嗯,学到东东了.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/11 1:53:00
     
     unihan 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:55
      门派:XML.ORG.CN
      注册:2005/11/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给unihan发送一个短消息 把unihan加入好友 查看unihan的个人资料 搜索unihan在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看unihan的博客9
    发贴心情 
    好像没有讲完啊,具体例子还没有给呢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/12 20:19:00
     
     matida 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:20
      积分:135
      门派:XML.ORG.CN
      注册:2005/4/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给matida发送一个短消息 把matida加入好友 查看matida的个人资料 搜索matida在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看matida的博客10
    发贴心情 
    偏题了吧...
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/14 11:59:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/25 13:01:39

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

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