C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: vb .net DOM で角括弧 [] を使う方法


(過去ログ 81 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■47757 / inTopicNo.1)  vb .net DOM で角括弧 [] を使う方法
  
□投稿者/ EDEN (1回)-(2010/03/13(Sat) 03:48:56)

分類:[.NET 全般] 

分類:[.NET 全般] 

開発環境
・windowsXP SP2
・Visual Studio .NET2003

はじめまして。何処を探しても見つからないので質問させて頂きます。
AXWebBrowserを使って自動的に処理を行っているのですが、下記の処理が出来なくて困っています。

AxWebBrowser1.Document.all.man[1].checked = True

man[1]の部分はタグの名前に相当します。
この時、VBでは角括弧[]は予約語を使用する時のエスケープ文字のようで、エラー「識別子が必要です」と出てしまいます。

[]のエスケープとしての機能をエスケープする事はできないのでしょうか?
つまり、タグの名前として認識出来ないかと言う事なのですが…

分かる方いらっしゃいましたら宜しくお願い致します。
引用返信 編集キー/
■47758 / inTopicNo.2)  Re[1]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ やじゅ (1551回)-(2010/03/13(Sat) 04:15:37)
やじゅ さんの Web サイト
No47757 (EDEN さん) に返信
> AxWebBrowser1.Document.all.man[1].checked = True
>
> man[1]の部分はタグの名前に相当します。

こんな感じで出来ないかな、わからないけど・・・
AxWebBrowser1.Document.all.tags("man[1]").checked = True
引用返信 編集キー/
■47759 / inTopicNo.3)  Re[2]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ EDEN (2回)-(2010/03/13(Sat) 04:39:53)
回答頂き有難う御座います。

> AxWebBrowser1.Document.all.tags("man[1]").checked = True
試してみましたが、エラーになってしまいました。

AxWebBrowser1.Document.all.tags("input").length
AxWebBrowser1.Document.all.tags("input")(0).click()

上記のようにタグの種類としてtagsは使いますが、名前を直接は無理のようです。

他に何か案は無いでしょうか?
[]が使われているタグは全部名前を変換しようかと考えていますが、これだと効率が悪い上に
根本的解決になってないので、出来れば普通に[]を唯の文字として認識してくれればと思うのですが・・・
引用返信 編集キー/
■47760 / inTopicNo.4)  Re[1]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ 渋木宏明(ひどり) (1292回)-(2010/03/13(Sat) 08:50:09)
渋木宏明(ひどり) さんの Web サイト
2010/03/13(Sat) 09:41:06 編集(投稿者)

> man[1]の部分はタグの名前に相当します。

「タグの名前」って何ですか?

素直に解釈すると、HTML 中に

<man[1]>ほげほげ</man[1]>

なんて記述があるように思えますが、まさかそんなはずはないですよね?

具体的に、HTML 中にはどんな記述があるんですか?

>AxWebBrowser1.Document.all.tags("input").length
>AxWebBrowser1.Document.all.tags("input")(0).click()

なんて書いているところを見ると、「タグの名前」と言っているのは name 属性のこと?

要するに

<input name="man[1]">

なんて要素を Document から取得したいってことですか?


引用返信 編集キー/
■47764 / inTopicNo.5)  Re[2]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ EDEN (3回)-(2010/03/13(Sat) 22:41:20)
2010/03/13(Sat) 22:42:29 編集(投稿者)
No47760 (渋木宏明(ひどり) さん) に返信
> 2010/03/13(Sat) 09:41:06 編集(投稿者)

御回答有難う御座いますm(_ _)m

<input name='man[1]' type='checkbox' value='1' checked>

上記のタグのname部分が名前と読んでいた部分です。
ですので、AxWebBrowser1.Document.all.man[1].checked = True
にてチェックを入れる事が出来ると思います。

IDも無いですしname属性での指定が出来ないので、仕方なく下記のようにしてみました。
総当りにして同じ名前が見つかったら処理してループを抜けます。

[]の回避の仕方が分かれば他の項目でも下記のような処理をしなくても良いので、高速に処理が出来るのですが…


        X = AxWebBrowser1.Document.all.tags("input").length - 1
            For I = 0 To X Step 1
                If AxWebBrowser1.Document.all.tags("input")(I).name = "man[1]" Then
                    If CheckBox1.Checked Then
                        AxWebBrowser1.Document.all.tags("input")(I).checked = True
                    Else
                        AxWebBrowser1.Document.all.tags("input")(I).checked = False
                    End If
                    Exit For
                End If
            Next I
        If I = X Then
            MessageBox.Show("manチェックボックスが見つかりません。", "設定画面エラー")
        End If

引用返信 編集キー/
■47765 / inTopicNo.6)  Re[3]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ Hongliang (567回)-(2010/03/13(Sat) 23:11:17)
IHTMLDocument3(を実装する Document)の getElementsByName を使えば良いんでは?
// 複数の要素が同じ name 属性を持てるので、このメソッドはコレクションを返します。
引用返信 編集キー/
■47766 / inTopicNo.7)  Re[3]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ やじゅ (1552回)-(2010/03/13(Sat) 23:17:17)
やじゅ さんの Web サイト
No47764 (EDEN さん) に返信
> <input name='man[1]' type='checkbox' value='1' checked>

namedItem("man[1]") とか getElementByName("man[1]") とか使えばいい気がしますね。

引用返信 編集キー/
■47767 / inTopicNo.8)  Re[4]: vb .net DOM で角括弧 [] を使う方法
□投稿者/ EDEN (4回)-(2010/03/14(Sun) 00:08:23)
渋木宏明(ひどり)様
Hongliang様
やじゅ様

有難う御座います。getElementByNameにて直接指定が出来ました。
getElementsByNameは前に使った事があると思います。
ずっとDocument.all.tagsにて作っていたので他のやり方に気がつきませんでした。
要素の指定は複数のやり方があったはずでした…

個人的に勉強して覚えながらやっているので、どうしても柔軟に考えられなくなってしまっています。
初めて質問をさせて頂きましたが、教えて頂きとても嬉しいです。
下記にて通りました。一応他の方が見たときの為に載せておきます。

AxWebBrowser1.Document.getElementsByName("man[1]")(0).checked = True

それでは最後になりますが、ご協力頂き本当に有難う御座いましたm(_ _)m
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -