重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。

立て続けで大変恐縮なのですが、

HtmlAgilityPackを用いて、特定のノードの
AttributesにAddメソッドで追加した後、
OuterHtmlで吐き出すと、追加した属性の値が
必ず「"」でくくられますが、これを「'(シングル)」で
くくって出力させる設定はありましたでしょうか。

最終的にReplaceしてしまえば構わないとは
思うのですが、かっこ悪いし、設定などでできるので
あればと思い、質問いたしました。

メソッドか何かで、あれば教えてください。
なければ「ない」と教えてください。

A 回答 (2件)

ソースを見て回答します。

HtmlNode.cs、HtmlAttrribute(Collection).csを見る限り、難しそうです。メソッド、コンストラクタともに標準では提供されていないため、独自にクラスを継承、(必要ならばオーバライド)するなどして作成するしかないためです。

理由はHtmlAttribute,csにて、初期値を設定する際に、ダブルクオーテーションで作成するよう定義されており、属性を新規作成する際に、独自のHtmlAttributeを設定する手段も提供されていないためです。
また、HtmlAttributeメソッドのコンストラクタは、QuoteTypeプロパティ(”または’)を設定する方法を提供していませんし、
HtmlAttributeColletionクラスも属するHtmlAttribute型インスタンスのQuoteTypeの一括変更を行うメソッドを提供していません。

実現はできたそうなので、独自に、一括してリプレースするメソッドを定義する方法が考えられます。
    • good
    • 0
この回答へのお礼

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

本当に何度もありがとうございました。

また何かありましたら、よろしくお願いいたします。

お礼日時:2013/06/21 19:39

HttpAttribute.QuoteTypeプロパティがあります。



AttributeValueQuote.SingleQuote
AttributeValueQuote.DoubleQuote のいずれかを指定します。

デフォルト値はDoubleQuoteです。

HTMLを文字列として得る前に
htmlnode.HtmlAttibuteCollectionプロパティでHtmlAttibuteCollectionを取得し(リストです)、
そのリストに含まれるQuoteTypeプロパティを全て変更します。HtmlNodeからは、それ以外に変更の契機が見当たりません。

その他には、HtmlAttributeCollection.Addメソッドに用いて、定義済みのHtmlAttribute型のインスタンスを追加する方法があります。
あるいはHtmlAttibuteCollection.AttributesWithName(属性名)でHtmlAttibuteのインスタンスを取得して、QuoteTypeプロパティを設定する方法です。

この回答への補足

またまた回答、ありがとうございます。

教えていただいた方法で、できるようにはなったのですが、
やはりどうしても「個別」で行うしかないのでしょうか。

Html全体の設定を、まとめて変更できるメソッド(または
プロパティ)があればと思ったのですが…。

foreachなどて走査しつつ、それぞれに設定…といった方法しか
ないのでしょうか。

よろしくお願いします。

補足日時:2013/06/17 08:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!