C#, C♯, C#相談室 Part61

このエントリーをはてなブックマークに追加
60デフォルトの名無しさん
XElement.Parse メソッドで質問があります。
HTMLを上記のメソッドに渡すと
EntityName を解析中にエラーが発生しました
と例外が発生しました。
半角のスペースがタイトルに含まれていたからなのかなと推測しました。
一般的にこういう場合はどのようにしてXElementで解析したらよいのでしょうか?
61デフォルトの名無しさん:2010/08/01(日) 20:44:18
その原因に即して修正してから読み込むしかないだろ
一般的にはHTMLは正しいXMLじゃないんだから無理というしかない
62デフォルトの名無しさん:2010/08/01(日) 20:47:42
>>60
つSgmlReader
63デフォルトの名無しさん:2010/08/01(日) 21:05:07
>>54
>「ParseとTryParse」のように、二つのメソッドを用意しておくべき。
そういう「べき論」を唱えてもいいけど、何故そうすべきなのかと聞かれたときに
合理的な理由を与えられる?

ただの教条主義じゃないのそれ。
64デフォルトの名無しさん:2010/08/01(日) 21:12:30
>>55
論点がズレてるなあ。

そのメソッドは常に成功するとは限らない(例外が発生する可能性がある)
ことを示すためにわざわざ妙な値を返してるのに、それでもエラーを想定した
コートを書かない場合を想定しなければならない理由が分からない。

百歩譲ってそういう「馬鹿で怠惰な」プログラマを想定すべきだとして、
「例外が出る場所が問題の発生個所と一致」しないことが、あえて取り上げる必要がある
問題だろうか。
65デフォルトの名無しさん:2010/08/01(日) 21:14:46
>>60
HTMLのパーサを自前で書くべし
ttp://japan.internet.com/developer/20051115/25.html
66デフォルトの名無しさん:2010/08/01(日) 21:30:53
>>60
mshtml使う手もあるぞ
67デフォルトの名無しさん:2010/08/01(日) 21:40:03
>>64
うん、あえてどころか、まじめに取り上げるべき大問題。
68デフォルトの名無しさん:2010/08/01(日) 21:46:57
>>67
ではその理由をどうぞ。
どうして大問題なの?
NullReferenceExceptionが発生した理由を推定できないプログラマがいるから?

そんな奴はいないと思うが、いるとしてどうしてそんな「馬鹿でどうしようもないプログラマ」
を想定する必要があるのでしょう。
69デフォルトの名無しさん:2010/08/01(日) 21:56:56
距離はなれてたらしんどいよ。
あと、そんな馬鹿でどうしようもないプログラマも相手にするのがC#だろ。
70デフォルトの名無しさん:2010/08/01(日) 22:03:33
>>69
>距離はなれてたらしんどいよ
それは、そういうことが起こるとしたら変数の初期化(または変数への代入)と
その変数の使用を意味なく離して書く悪しきプログラミングスタイルに起因する問題であって、
>>36的な方法を取ったことに起因する問題ではないでしょ。

>そんな馬鹿でどうしようもないプログラマも相手にするのがC#だろ
もちろんフールプルーフに作ることは大事。
でも、フールプルールとは「ありえないような馬鹿を想定すること」ではないはず。
71デフォルトの名無しさん:2010/08/01(日) 22:11:06
>>58
ありがとうございます。
72デフォルトの名無しさん:2010/08/01(日) 22:48:26
>>65
.NETだけでやろうとした場合、自作しかないのでしょうか?
スペースなどの文字を&***のような形に変換するような
機能はないのでしょうか・・・

ダウンロードしたHTMLを解析するというのは
よくある要求だと思うのですが・・・
73デフォルトの名無しさん:2010/08/01(日) 22:49:54
>>72
普通にDOMでやれよ。
74デフォルトの名無しさん:2010/08/01(日) 22:50:17
htmlデコード
75デフォルトの名無しさん:2010/08/01(日) 23:03:10
>>73
domでやるとはどういう意味でしょうか?
ActiveXを使うということでしょうか?
76デフォルトの名無しさん:2010/08/01(日) 23:07:42
DOMでわかんないなら、初心者スレ行け。
77デフォルトの名無しさん:2010/08/01(日) 23:08:43
>>72
HttpUtility.HtmlEncode
78デフォルトの名無しさん:2010/08/01(日) 23:08:56
>>76
DOMは分かりますよ。
でも.NETとは無関係の一般的な用語ですよね。
79デフォルトの名無しさん:2010/08/01(日) 23:13:35
>>77
求めていたものにとても近いです。
ただタグの<などすべて変換されてしまうので
結局は解析してやらないといけないみたいです。
でもありがとうございました。
80デフォルトの名無しさん:2010/08/01(日) 23:25:55