• ベストアンサー

C# HAPで属性を追加後、OuterText

お世話になります。 立て続けで大変恐縮なのですが、 HtmlAgilityPackを用いて、特定のノードの AttributesにAddメソッドで追加した後、 OuterHtmlで吐き出すと、追加した属性の値が 必ず「"」でくくられますが、これを「'(シングル)」で くくって出力させる設定はありましたでしょうか。 最終的にReplaceしてしまえば構わないとは 思うのですが、かっこ悪いし、設定などでできるので あればと思い、質問いたしました。 メソッドか何かで、あれば教えてください。 なければ「ない」と教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

ソースを見て回答します。HtmlNode.cs、HtmlAttrribute(Collection).csを見る限り、難しそうです。メソッド、コンストラクタともに標準では提供されていないため、独自にクラスを継承、(必要ならばオーバライド)するなどして作成するしかないためです。 理由はHtmlAttribute,csにて、初期値を設定する際に、ダブルクオーテーションで作成するよう定義されており、属性を新規作成する際に、独自のHtmlAttributeを設定する手段も提供されていないためです。 また、HtmlAttributeメソッドのコンストラクタは、QuoteTypeプロパティ(”または’)を設定する方法を提供していませんし、 HtmlAttributeColletionクラスも属するHtmlAttribute型インスタンスのQuoteTypeの一括変更を行うメソッドを提供していません。 実現はできたそうなので、独自に、一括してリプレースするメソッドを定義する方法が考えられます。

tatapatank
質問者

お礼

何度も丁寧に教えていただき、本当にありがとうございました。 とりあえずは、OuterHTMLで出力する際に、一つ一つ変換させる 方法で対処いたしました。 本当に何度もありがとうございました。 また何かありましたら、よろしくお願いいたします。

その他の回答 (1)

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

HttpAttribute.QuoteTypeプロパティがあります。 AttributeValueQuote.SingleQuote AttributeValueQuote.DoubleQuote のいずれかを指定します。 デフォルト値はDoubleQuoteです。 HTMLを文字列として得る前に htmlnode.HtmlAttibuteCollectionプロパティでHtmlAttibuteCollectionを取得し(リストです)、 そのリストに含まれるQuoteTypeプロパティを全て変更します。HtmlNodeからは、それ以外に変更の契機が見当たりません。 その他には、HtmlAttributeCollection.Addメソッドに用いて、定義済みのHtmlAttribute型のインスタンスを追加する方法があります。 あるいはHtmlAttibuteCollection.AttributesWithName(属性名)でHtmlAttibuteのインスタンスを取得して、QuoteTypeプロパティを設定する方法です。

tatapatank
質問者

補足

またまた回答、ありがとうございます。 教えていただいた方法で、できるようにはなったのですが、 やはりどうしても「個別」で行うしかないのでしょうか。 Html全体の設定を、まとめて変更できるメソッド(または プロパティ)があればと思ったのですが…。 foreachなどて走査しつつ、それぞれに設定…といった方法しか ないのでしょうか。 よろしくお願いします。

関連するQ&A