VBScript で XML
「はてな」からダウンロードした XML を読んで、HTML に保存する
↓ こんな XML ファイルを読む
<?xml version="1.0" encoding="UTF-8"?> <diary> <day date="2005-10-02" title="Delphi Personal で データベース"> <body> *p1*[Delphi][ADO][COM] Delphi Personal で ADO **データベースを作成する <PRE> <SPAN CLASS="KEY">procedure</SPAN> TForm1.Button5Click&#x28;Sender: TObject&#x29;; <SPAN CLASS="KEY">var</SPAN> cat: <SPAN CLASS="KEY">Variant</SPAN>;<SPAN CLASS="COM">//Catalog</SPAN> <SPAN CLASS="KEY">begin</SPAN> cat := CreateOleObject&#x28;'ADOX.Catalog'&#x29;; <SPAN CLASS="COM">//Edit3 に mdbファイル名を入力</SPAN> cat.Create&#x28;'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Edit3.Text + ';'&#x29;; <SPAN CLASS="COM">// Access97 OLEDB.3.51</SPAN> <SPAN CLASS="COM">// Access2000 OLEDB.4.0</SPAN> <SPAN CLASS="KEY">end</SPAN>; </PRE> </body> </day> <day date="2005-02-02" title="C++Builder Personal で データベース"> <body> *p1*[C++Builder][ADO][COM] C++Builder Personal で ADO **データベースを作成する <PRE> <SPAN CLASS="KEY">void</SPAN> <SPAN CLASS="KEY">__fastcall</SPAN> TForm1::Button5Click&#x28;TObject *Sender&#x29; { <SPAN CLASS="KEY">Variant</SPAN> cat = Variant::CreateObject&#x28;"ADOX.Catalog"&#x29;; <SPAN CLASS="COM">//Edit3 に mdbファイル名を入力</SPAN> cat.Exec&#x28;Function&#x28;"Create"&#x29;&#x3C;&#x3C;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Edit3-&#x3E;Text + ";"&#x29;; <SPAN CLASS="COM">// Access97 OLEDB.3.51</SPAN> <SPAN CLASS="COM">// Access2000 OLEDB.4.0</SPAN> } </PRE> </body> </day> </diary>
lesson004.vbs
Dim dom Set dom = CreateObject("Microsoft.XMLDOM") dom.Load(WScript.Arguments(0)) Dim fs Set fs = CreateObject("Scripting.FileSystemObject") Dim sDate: sDate = "" Dim sTitle: sTitle = "" getXml dom.DocumentElement Set fs = Nothing Set dom = Nothing Sub getXml(node) If node.nodeValue <> "" Then putHtml node.parentNode.nodeName, node.nodeValue End If If Not (node.Attributes Is Nothing) Then For Each attr In node.Attributes putHtml attr.nodeName, attr.nodeValue Next End If If node.hasChildNodes Then For Each child In node.childNodes getXml child Next End If End Sub Private Sub putHtml(nodeName, nodeValue) Select Case nodeName Case "date" sDate = nodeValue Case "title" sTitle = nodeValue Case "body" Dim tsHtml Set tsHtml = fs.OpenTextFile(WScript.Arguments(1) & "\" & sDate & ".html", 2, True) tsHtml.WriteLine "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" tsHtml.WriteLine "<html>" tsHtml.WriteLine "<head>" tsHtml.WriteLine " <title>" & sTitle & "</title>" tsHtml.WriteLine "</head>" tsHtml.WriteLine "<body>" tsHtml.WriteLine nodeValue tsHtml.WriteLine "</body>" tsHtml.WriteLine "</html>" tsHtml.Close Set tsHtml = Nothing End Select End Sub
実行形式
C:\>cscript c:\study\vbscript\chapter005\lesson004.vbs c:\study\vbscript\chapter
005\hatena.xml c:\study\vbscript\chapter005\html //nologo
2005-02-02.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>C++Builder Personal で データベース</title> </head> <body> *p1*[C++Builder][ADO][COM] C++Builder Personal で ADO **データベースを作成する <PRE> <SPAN CLASS="KEY">void</SPAN> <SPAN CLASS="KEY">__fastcall</SPAN> TForm1::Button5Click(TObject *Sender) { <SPAN CLASS="KEY">Variant</SPAN> cat = Variant::CreateObject("ADOX.Catalog"); <SPAN CLASS="COM">//Edit3 に mdbファイル名を入力</SPAN> cat.Exec(Function("Create")<<"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Edit3->Text + ";"); <SPAN CLASS="COM">// Access97 OLEDB.3.51</SPAN> <SPAN CLASS="COM">// Access2000 OLEDB.4.0</SPAN> } </PRE> </body> </html>
2005-10-02.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Delphi Personal で データベース</title> </head> <body> *p1*[Delphi][ADO][COM] Delphi Personal で ADO **データベースを作成する <PRE> <SPAN CLASS="KEY">procedure</SPAN> TForm1.Button5Click(Sender: TObject); <SPAN CLASS="KEY">var</SPAN> cat: <SPAN CLASS="KEY">Variant</SPAN>;<SPAN CLASS="COM">//Catalog</SPAN> <SPAN CLASS="KEY">begin</SPAN> cat := CreateOleObject('ADOX.Catalog'); <SPAN CLASS="COM">//Edit3 に mdbファイル名を入力</SPAN> cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Edit3.Text + ';'); <SPAN CLASS="COM">// Access97 OLEDB.3.51</SPAN> <SPAN CLASS="COM">// Access2000 OLEDB.4.0</SPAN> <SPAN CLASS="KEY">end</SPAN>; </PRE> </body> </html>