如何将TXT文件转化为XML文档?请高手作答!

如何将TXT文本文件转化为XML文档?请高手作答!
---------------------------------------------------------------

book.txt
1 &brvbar7-100-01532-8/K.206 &brvbarASP.NET XML高级编程 &brvbarChris Knowles,Stephen Mohr等/刘爽 ¦清华大学出版社 &brvbar46 &brvbar1.bmp
2 &brvbar7-302-04934-3 &brvbarASP与XML 高级编程 &brvbarMark Baartse&Richard Blair等/康博 ¦清华大学出版社 &brvbar78 &brvbar2.bmp
3 &brvbar7-302-05649-8 ¦基于XML 的 ASP.NET开发 &brvbarDan Wahlin/王宝良 ¦清华大学出版社 &brvbar42 &brvbar3.bmp
4 &brvbar7-111-10440-4 &brvbarASP.NET 技术内幕 &brvbarStephen Walther ¦机械工业出版社 &brvbar99 &brvbar4.bmp
5 &brvbar7-302-06148-3 &brvbarXML应用的UML建模技术 &brvbarDavid Carlson/周靖 侯奕萌 沈金河等 ¦清华大学出版社 &brvbar32 &brvbar5.bmp
6 &brvbar7-111-11385-3 &brvbarEffective Java中文版 &brvbarJoshua Bloch/潘爱民 ¦机械工业出版社 &brvbar39 &brvbar6.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 "正确的格式:总排序号 &brvbarISBN ¦书名 ¦作者/翻译 ¦出版社 ¦价格 ¦图片" & 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

使用方法:从MS-DOS进入book.vbs所在目录运行:cscript book.vbs book.txt

Published At
Categories with Web编程
Tagged with
comments powered by Disqus