###前提・実現したいこと
Xmllintでファイルの中を見ようと思っています。
hoge.html
がどうなっているのかを解析したいのですが、やり方がよくわかりませんでした。
###発生している問題・エラーメッセージ
$ xmllint --shell --html hoge.html
とすると
encoding error : input conversion failed due to input error, bytes 0xB0 0x97 0xE6 0xB1 encoding error : input conversion failed due to input error, bytes 0xB0 0x97 0xE6 0xB1 I/O error : encoder error
と出ました。
その後、
/ >
と端末上に表示されます。
エラーコードで検索してもよくわかりませんでした。
###該当のソースコード
HTML
1 1 <html> 2 2 <head> 3 3 <title>ホームページのタイトル</title> 4 4 <link rel="stylesheet" media="all" href="Styles.css" type="text/css"> 5 5 <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> 6 6 <script language="javascript"> 7 7 <!-- 8 8 function Check(){ 9 9 ▸-if(document.Form1.Err.value!=""){ 10 10 ▸-▸-parent.location="ErrMsg.php?Err="+document.Form1.Err.value; 11 11 ▸-} 12 12 ▸-▸- 13 13 } 14 14 --> 15 15 </script> 16 16 17 17 </head> 18 18 19 19 <body MS_POSITIONING="GridLayout" class="bodyInfo" onLoad="Check()"> 20 20 <form name="Form1" action=""> 21 21 <input type="hidden" name="Err" value=""> 22 22 ▸-<table border="0" cellpadding="0" cellspacing="0" style="position:absolute; top:0px; left:5px;"> 23 23 ▸- <tr> 24 24 ▸-<td> 25 25 ▸-▸-<table style="font-size:12px;" border="1" class="hyoMenu" width="870"> 26 26 ▸-▸-▸-▸-▸-<tr align="right"> 27 27 ▸-▸-▸-▸-<td width="40" bgcolor="#FFFFCC">2017</td> 28 28 ▸-▸-▸-▸-<td width="20" bgcolor="#FFFFCC">01</td> 29 29 ▸-▸-▸-▸-<td width="20" bgcolor="#FFFFCC">17</td> 30 30 ▸-▸-▸-▸-<td width="20" bgcolor="#FFFFCC">19</td> 31~省略~ 32 4327 ▸-▸-▸-▸-▸-▸-▸- 33 4328 ▸-</table> 34 4329 ▸-</td> 35 4330 </tr></table> 36 4331 </form> 37 4332 </body> 38 4333 </html> 39 40
###試したこと
GoogleCrhome
で右クリック→要素の調査→Copy→CopyXpathとしたときは
/html/body/form/table/tbody/tr/td/table/tbody/tr[1]/td[1]
と取得できました。
また、
$ hoge.html
は
HTML
1<frame name="Title" src="Data.php?MstCode=0123456&Time=2017011724" scrolling="no">
となっているところのsrc=
の
Data.php?MstCode=0123456&Time=2017011724
というファイルです。
Xmllintに文字エンコードに関するオプション
は
xmllint --encode
でできるようでした。
なので、
xmllint --shell --encode utf-8 hoge.html
としてみたのですが、
hoge.html:17: parser error : Opening and ending tag mismatch: META line 5 and head </head> ^ hoge.html:4331: parser error : Opening and ending tag mismatch: input line 21 and form </form> ^ hoge.html:4332: parser error : Opening and ending tag mismatch: form line 20 and body </body> ^ hoge.html:4333: parser error : Opening and ending tag mismatch: body line 19 and html </html> ^ hoge.html:4334: parser error : Premature end of data in tag link line 4 hoge.html:4334: parser error : Premature end of data in tag head line 2 hoge.html:4334: parser error : Premature end of data in tag html line 1
と表示されました。
$ xmllint --shell --encode CP932 hoge.html
また、としてみたところ、
hoge.html:17: parser error : Opening and ending tag mismatch: META line 5 and head </head> ^ hoge.html:4331: parser error : Opening and ending tag mismatch: input line 21 and form </form> ^ hoge.html:4332: parser error : Opening and ending tag mismatch: form line 20 and body </body> ^ hoge.html:4333: parser error : Opening and ending tag mismatch: body line 19 and html </html> ^ hoge.html:4334: parser error : Premature end of data in tag link line 4 hoge.html:4334: parser error : Premature end of data in tag head line 2 hoge.html:4334: parser error : Premature end of data in tag html line 1
エンコードは何を指定すれば良さそうですか?(解決?)
エンコードとは関係なさそうなエラーも出てしまったようですが、どのように対処すれば良さそうでしょうか?
###追記
$ xmllint --shell --encode utf-8 hoge.html
↓から
$ xmllint --shell --encode EUC-JP hoge.html
としてみましたが、エラーは変わりませんでした。
hoge.html:17: parser error : Opening and ending tag mismatch: META line 5 and head </head> ^ hoge.html:4331: parser error : Opening and ending tag mismatch: input line 21 and form </form> ^ hoge.html:4332: parser error : Opening and ending tag mismatch: form line 20 and body </body> ^ hoge.html:4333: parser error : Opening and ending tag mismatch: body line 19 and html </html> ^ hoge.html:4334: parser error : Premature end of data in tag link line 4 hoge.html:4334: parser error : Premature end of data in tag head line 2 hoge.html:4334: parser error : Premature end of data in tag html line 1
となりました。
何が原因だと考えられるのでしょうか...。
###追記
hoge.html
(xmllint
で解析しようとしているファイル)
はもともと、
サイトのHTMLで
frameタグのsrc属性で関連付けられて
表示されていたものです。
また、閉じタグがないためエラーが出ているとのことですが、
HTMLにて終了タグがいるたぐいらないタグ
によると、
linkタグにはそもそも閉じタグは無いということらしいです…。
正しいファイルでも閉じタグが無いと
xmllintはエラーを吐き出すのなら、閉じタグをつければ良いと思うのですが、
どこにつけるべきでしょうか…?
タグは</link>
で良いですか…?
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/17 17:14
2017/01/18 02:53
2017/01/18 03:16
2017/01/18 03:30
2017/01/18 08:00
2017/01/18 09:39