51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4656|回复: 14
打印 上一主题 下一主题

[原创] qtp的脚本中如何将xml文件转化为txt,急请教

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-8-24 23:12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sdlkfj9

我只知道如何将txt转化为xml,脚本如下。
那位兄台能告诉我如何将xml文件转化为txt。。。。。。。。。。

book.txt  
1  |7-100-01532-8/K.206  |ASP.NET  XML高级编程  |Chris  Knowles,Stephen  Mohr等/刘爽  |清华大学出版社  |46  |1.bmp  
2  |7-302-04934-3  |ASP与XML  高级编程  |Mark  Baartse&Richard  Blair等/康博  |清华大学出版社  |78  |2.bmp  
3  |7-302-05649-8  |基于XML  的  ASP.NET开发  |Dan  Wahlin/王宝良  |清华大学出版社  |42  |3.bmp  
4  |7-111-10440-4  |ASP.NET  技术内幕  |Stephen  Walther  |机械工业出版社  |99  |4.bmp  
5  |7-302-06148-3  |XML应用的UML建模技术  |David  Carlson/周靖  侯奕萌  沈金河等  |清华大学出版社  |32  |5.bmp  
6  |7-111-11385-3  |Effective  Java中文版  |Joshua  Bloch/潘爱民  |机械工业出版社  |39  |6.bmp

book.vbs  
Option  Explicit  
if  WScript.Arguments.length=0  then  
           WScript.echo  "请指向数据源文件!"  
           WScript.quit  
end  if  
Dim  dbfile,db,sdb,i  
Dim  fso  
Dim  fo,nf  
dbfile  =  WScript.Arguments(0)  
WScript.echo("正在解析"+dbfile+"....")  
Set  fso  =  WScript.CreateObject("Scripting.FileSystemObject")  
if  fso.FileExists(dbfile)  Then  
           Set  fo  =  fso.OpenTextFile(dbfile,1)  
           db  =  split(fo.ReadAll,Chr(13)&Chr(10))  
           For  each  sdb  in  db  
                       If  UBound(split(sdb,"  |"))<>6  Then  
                                   WScript.echo  vbCrlf  &  "未知的数据源文件:"  &  sdb  
                                   WScript.echo  "正确的格式:总排序号  |ISBN  |书名  |作者/翻译  |出版社  |价格  |图片"  &  vbCrlf  
                       Else  
                                   autoXML  split(sdb,"  |")  
                       End  If  
           Next  
Else  
           WScript.echo  "请指向数据源文件!"  
           WScript.quit  
End  If  

function  autoXML(ary)  
           On  Error  Resume  Next  
           Dim  xmlFile  
           Dim  xmldoc,root,books  
           xmlFile  =  "book.xml"  
           Set  xmldoc  =  WScript.CreateObject("Microsoft.XMLDOM")  
           xmldoc.async  =  false  
           xmldoc.load  xmlFile  
           if  xmldoc.parseError.errorCode  Then  
                       Dim  xmlhead,xslhead  
                       Set  xmlhead  =  xmldoc.createProcessingInstruction("xml","version=""1.0""  encoding=""UTF-8""")  
                       xmldoc.insertBefore  xmlhead,xmldoc.childNodes(0)  
                       Set  xslhead  =  xmldoc.createProcessingInstruction("xml-stylesheet","type=""text/xsl""  href=""book.xsl""")  
                       xmldoc.insertBefore  xslhead,xmldoc.childNodes(1)  
                       Set  books  =  xmldoc.createElement("books")  
                       xmldoc.appendChild  books  
           Else  
                       Set  books  =  xmldoc.documentElement  
           End  If  
           Dim  book,nodes,node  
           Set  book  =  xmldoc.createElement("book")  
           books.appendChild  book  
           nodes  =  split("id,ISBN,book_name,writer,publish,price,img",",")  
           for  i=0  to  UBound(nodes)  
                       Set  node  =  xmldoc.createElement(nodes(i))  
                       node.text  =  ary(i)  
                       book.appendChild  node  
           Next  
           xmldoc.save  xmlFile  
           If  Err.number<>0  Then  
                       WScript.echo  "保存失败!原因:"  &  Err.Description  
           Else  
                       WScript.echo  "《"  &  ary(2)  &  "》保存成功!"  
           End  If  
End  Function

[ 本帖最后由 sinpa 于 2006-8-24 23:14 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-8-25 09:05:52 | 只看该作者
………………
另存为*.txt文件不久行了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-8-25 12:46:52 | 只看该作者

你是过可以吗,我试了不行啊

直接从xml中取出的文字内容是乱麻,但是从txt中取出的文字是正常的
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-8-28 10:42:37 | 只看该作者
楼主如果解决乱码问题的话能否把代码发给小弟一份,因为小弟也碰到了这样的问题。
小弟先谢谢了,我的邮箱是hensky@163.com
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-8-28 11:44:24 | 只看该作者

郁闷阿

乱码还是没有解决,那位兄台能指点一下。
qtp他读取Xml文件的内容时,取出的都是乱码,后来我将它转化为txt文件了,但读出的还是乱码,看来无计可施。
现在只能想想,在读取之前怎么设定文字的内码了。。。
等待解决中阿。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2006-8-29 00:37:33 | 只看该作者

5天了

没有人定一下,郁闷。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-8-29 12:32:44 | 只看该作者

好消息

问题终于解决了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-8-29 12:54:50 | 只看该作者
楼主能将解决的代码发给我一份吗
我的邮箱是hensky@163.com
小弟先谢谢了
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-8-29 13:28:27 | 只看该作者

是这样的

当用qtp直接读取xml文件得时候 ,其中的内容为:
<?xml version="1.0" encoding="utf-8"?>         。。。。。。。。。。
其中="utf-8"?>导致了乱码

我给大家一个简单的方法:
Dim v_text
Set doc = XMLUtil.CreateXML()
doc.LoadFile "d:\test.xml"
v_text =  doc.ToString
DataTable("Array_text", dtglobalSheet) = v_text
msgbox v_text
那么得到的内容中文就是正确的了,doc.ToString目的就是转化字符集
如果大家有什么更好的方法,可以提出,相互探讨一下。

但是读出的内容也有问题,内容顺序有点乱,但不影响取数据。
哈哈sdlkfj3sdlkfj3sdlkfj2sdlkfj5

[ 本帖最后由 sinpa 于 2006-8-29 13:31 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-8-29 17:00:56 | 只看该作者
sinpa大虾,我把你的程序放到VBS文件中去调试的话,我该怎么写啊,我是通过修改你上面的TXT转XML代码实现的,但是出来的还是乱码啊,请楼主把代码发给小弟一份,小弟将万分感激。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-9-5 11:16:29 | 只看该作者
由于字符集的问题,我用QTP从XML文件中读取内容时会报错,但是设为encoding=GB2312就没问题了。
可以这样处理:
将文件1的内容读取出来,然后将文件1内容中的utf-8改为GB2312,再保存为文件2,接着对文件2进行处理就可以了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2006-9-5 19:36:26 | 只看该作者
    谢谢楼主的共享精神!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2006-9-6 10:53:47 | 只看该作者
    和楼主代码的功能一样,用RUBY写的,RUBY的字符处理特别好
    require 'rexml/document'

    def xmlrootcreate(xmldoc,rootname,rootvalue=nil)
    if rootname.kind_of? String
    root = REXML::Element.new(rootname)
    xmldoc.add(root)
    root.add_text(rootvalue)
    else
    raise "can't create root"
    end
    end

    def xmlelemcreate(parelement,elename,value = nil)
    if elename.kind_of? String
    child = REXML::Element.new(elename,parelement)
    child.add_text(value)
    else
    raise "can't create element"
    end
    end

    doc = REXML::Document.new
    root = REXML::Element.new()
    child = REXML::Element.new()
    elementname = %w{index code name writer print cost pic}

    textfile = File.new("c:\\aa.txt")
    tcol = Array.new()
    tcol = textfile.read.to_s.split("\n")
    trow = Array.new(tcol.length,10)
    (1..(tcol.length).to_i).each do |i|
      trow[i-1] = tcol[i-1].split("|")
    end

    root = xmlrootcreate(doc,"booklist")
    child = xmlelemcreate(root,"book")

    (1..(tcol.length).to_i).each do |i|
      (1..(trow[i-1].length).to_i).each do |j|
        xmlelemcreate(child,elementname[j-1],trow[i-1][j-1])
      end
    end

    myfile = File.new("c:\\13021.xml","w+")
    myfile.puts("<?xml version=\"1.0\" encoding=\"GBK\"?>")
    myfile.puts(doc.document)
    myfile.close
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2006-11-21 16:18:11 | 只看该作者
    麻烦楼主把代码也发给小弟一份,先谢了。
    netsky_lt@126.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2006-11-22 17:19:19 | 只看该作者
    多谢楼主共享!!!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 17:34 , Processed in 0.082433 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表