2012年02月13日

XML に従った HTML4 ファイルを WSH(VBS) からロードするには

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>HTML</TITLE>
</HEAD>
<BODY>

<P>
Text1
</P>

</BODY>
</HTML>

上記の HTML ファイルの本文である "Text1" を、VBScript/JScript (WSH) の XML の DOM を使って取得するには、どうすればよいでしょう。

HTML ではない XML をロードする次のようなスクリプトを実行した場合、text_node が Nothing になって失敗します。

Dim is_success, xml, html_tag, text_node
Set xml = CreateObject("MSXML2.DOMDocument")
is_success = xml.load( "HTML4.html" ): If not is_success Then Err.Raise 1
Set html_tag = xml.lastChild
Set text_node = html_tag.selectSingleNode( "./BODY/P/text()" )
WScript.Echo text_node.nodeValue

期待したとおりに動かすには、CreateObject("MSXML2.DOMDocument") の直後に次のスクリプトを記述する必要があります。

xml.resolveExternals = false
xml.validateOnParse = false

MSDN を見てみましたが、なぜ必要なのか分かりませんでした。
http://msdn.microsoft.com/en-us/library/ms762791(v=vs.85).aspx

sage_p at 00:14│Comments(0)TrackBack(0) プログラミング 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔