人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VS2015 C# コマンドラインアプリ作成について教えてください。

以下のURLを参照してclassの値を撮ろうとしています。
http://www.atmarkit.co.jp/fdotnet/dotnettips/908classname/classname.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/687nondispbrowser/nondispbrowser.html

例として取得しようとしているものは以下のurl
http://ejje.weblio.jp/content/solid

class=phoneticEjjeDesc>s?l?d</span><span class=phoneticEjjeDc>(米国英語)</span>, <span

上記の米国英語のs?l?dです。

ソースは以下のように書き換えました。
static void Main() {

省略


foreach (HtmlElement e in doc.GetElementsByTagName("className")) {

string c = e.GetAttribute("className");
string text = e.InnerText;
if (!string.IsNullOrEmpty(c)
&& !string.IsNullOrEmpty(text)) {
text = text.Replace("\r\n", ""); // 改行文字の削除
Console.WriteLine(c);
Console.WriteLine(text);
}
}
}

取れませんでした。デバックするとclassNameでは1つも対象がありませんでした。classにしても同じでした。registoryでwebbrowerのバージョンを11に指定しても同じでした。
実行環境はwindows 10です。

●質問者: mai_mai_mail
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●200ポイント ベストアンサー

ここ、違います。SPAN タグを対象にします。

// foreach (HtmlElement e in doc.GetElementsByTagName("className")) {
 foreach (HtmlElement e in doc.GetElementsByTagName("SPAN")) {

対象を選ぶところも違います。
Null 判定だけじゃなくて、e.GetAttribute("className") で取得した値が "phoneticEjjeDesc" かどうかの判定も必要です。


mai_mai_mailさんのコメント
早速返信ありがとうございます。 教えていただいたように書きましたが、取得できませんでした。どこが悪いかご教授いただけますか? foreach (HtmlElement e in doc.GetElementsByTagName("class")) { foreach (HtmlElement e2 in doc.GetElementsByTagName("SPAN")) { string c = e.GetAttribute("class"); string text = e.InnerText; if (!string.IsNullOrEmpty(c) && !string.IsNullOrEmpty(text) ) { if (c == "phoneticEjjeDesc") { text = text.Replace("\r\n", ""); // 改行文字の削除 Console.WriteLine(c); Console.WriteLine(text); } } } }

a-kuma3さんのコメント
こんな感じになるかなと。 >|cs| foreach (HtmlElement e in doc.GetElementsByTagName("SPAN")) { string c = e.GetAttribute("className"); string text = e.InnerText; if (!string.IsNullOrEmpty(c) && !string.IsNullOrEmpty(text) ) { if (c == "phoneticEjjeDesc") { text = text.Replace("\r\n", ""); // 改行文字の削除 Console.WriteLine(c); Console.WriteLine(text); } } } ||< doc.GetElementsByTagName("class") のループを無くして、クラス属性の取得を className にしました。 少なくとも、ループの内側に入るはずです。 クラス属性は "className" で取れると思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ