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

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

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

Re[6]: HtmlのTag情報から属性やStyleを取得したい


(過去ログ 99 を表示中)

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

■59024 / inTopicNo.1)  HtmlのTag情報から属性やStyleを取得したい
  
□投稿者/ Mira (34回)-(2011/05/09(Mon) 15:47:21)

分類:[ASP.NET (VB)] 

Htmlのタグ情報からWeb.UI.AttributeCollectionとCSSStyleCollectionを取得したいのですが
地道に文字列解析する方法(今これでやってます^^;)以外にもっと簡素な方法はあるでしょうか?
FrameWork自体がそれをやってるのでそういうClassがあるのではないかと思っているのですが

一番やりたいのはControl.Renderメソッドとまったく逆の動作です

例えば
"<font color="blue" style="background-color:white;">Test</font>"の文字列から

HtmlControl等に変換できればいいのですが

属性のCollectionとStyleのCollectionだけでもやりたいことは実現できます

環境はFrameWork2.0です。よろしくお願いします
引用返信 編集キー/
■59025 / inTopicNo.2)  Re[1]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ shu (678回)-(2011/05/09(Mon) 16:08:52)
2011/05/09(Mon) 16:09:16 編集(投稿者)

No59024 (Mira さん) に返信
Dim strSrc = "<font color=""blue"" style=""background-color:white;"">Test</font>"
Dim doc As New XmlDocument()
doc.LoadXml(strSrc)

Dim nd = doc.ChildNodes(0)

Console.WriteLine(nd.Attributes("color").Value)
Console.WriteLine(nd.Attributes("style").Value)
Console.WriteLine(nd.InnerText)
引用返信 編集キー/
■59026 / inTopicNo.3)  Re[2]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ Mira (35回)-(2011/05/09(Mon) 17:45:28)
Shuさんいつもありがとうございます

Attributeについてはこれでいけそうですね

後、CSSStyleCollectionの取得方法がわかる方や直接Controlに変換する方法等がわかる方
いらっしゃいましたらよろしくお願いしますm(_ _)m
引用返信 編集キー/
■59028 / inTopicNo.4)  Re[3]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ tomo (1回)-(2011/05/09(Mon) 19:23:01)
このあたりとかいかがでしょう?

http://ja.w3support.net/index.php?db=so&id=319422


No59026 (Mira さん) に返信
> Shuさんいつもありがとうございます
>
> Attributeについてはこれでいけそうですね
>
> 後、CSSStyleCollectionの取得方法がわかる方や直接Controlに変換する方法等がわかる方
> いらっしゃいましたらよろしくお願いしますm(_ _)m
引用返信 編集キー/
■59036 / inTopicNo.5)  Re[4]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ Mira (36回)-(2011/05/10(Tue) 09:47:28)
2011/05/10(Tue) 09:48:47 編集(投稿者)

> http://ja.w3support.net/index.php?db=so&id=319422

tomoさんありがとうございます

Page.ParseControlを使用するとTag情報をControlにCastすることができました
ただ制限があってrunat="Server"の文字がないと私が意図したControlとしてCastされませんでした

Dim TagSample As String = "<font color=""red"" style=""background-color:blue;"" runat=""server"">test</font>"
Dim ControlSample As Control = Page.ParseControl(TagSample)
の場合ControlSample.Controls(0)がHtmlGenericControlになる

Dim TagSample As String = "<font color=""red"" style=""background-color:blue;"">test</font>"
の場合ControlSample.Controls(0)がTagSampleをTextとしたLiteralControlになる

また
System.Web.UI.Design.ControlParser.ParseControlというメソッドを見つけたのですが
パラメーターdesignerHostの指定の仕方がわかりませんでした

runat="Server"なしでもHtmlGenericControlにCastできれば一番ありがたいのですが・・・
runat="Server"がなければFrameWorkは中身を解析する必要がないので変換しないということでしょうか・・・ですよね><

引用返信 編集キー/
■59042 / inTopicNo.6)  Re[5]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ tomo (2回)-(2011/05/10(Tue) 12:40:09)
2011/05/10(Tue) 12:41:15 編集(投稿者)
こんにちは。

> runat="Server"なしでもHtmlGenericControlにCastできれば一番ありがたいのですが・・・
> runat="Server"がなければFrameWorkは中身を解析する必要がないので変換しないということでしょうか・・・ですよね><

runat="Server"は、サーバーコントロールとして扱うという意味なので、
runat="Server"が指定されていないと、Controlに変換するのは難しいかもしれません。

Htmlを解析するときにrunat="Server"がなければ追加して、コントロール化するか
ちょっと無理やり感がありますが、
以下の方法でStyle値をCssStyleCollectionに変換できるようです。

----
Dim cssStyleCol As CssStyleCollection
cssStyleCol = New Panel().Style
cssStyleCol.Clear()
cssStyleCol.Value = "font-size:12px;background-color:blue;"

'確認
For Each cssKey As String In cssStyleCol.Keys
    Response.Write(String.Format("Key:{0} Item:{1}", cssKey, cssStyleCol.Item(cssKey)))
    Response.Write("<br/>")
Next
----

ところで、すっかり聞き忘れてしまったのですが、
CssStyleCollectionに変換したいのはStyle属性の中身であってますか?

引用返信 編集キー/
■59043 / inTopicNo.7)  Re[6]: HtmlのTag情報から属性やStyleを取得したい
□投稿者/ Mira (37回)-(2011/05/10(Tue) 12:56:44)
tomoさん回答ありがとうございます

> 以下の方法でStyle値をCssStyleCollectionに変換できるようです。

shuさんから教わったLoadXmlとtomoさんから教わったCssStyleCollectionの取得方法で
実現することができました。ありがとうございました

> CssStyleCollectionに変換したいのはStyle属性の中身であってますか?

はい、あってます。伝わりづらい質問で申し訳ないです
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -