2009-03-03 10 views
29

私は、トークンを解析するC#で書いたいくつかの方法を文書化しています。システムの他の領域におけるいくつかの技術的制約により、これらのトークンはXML要素(すなわち、<tokenName />)の形式をとる必要があります。これらのトークンの形式を要約文自体に入れたいと思います。Xmlの文字列をC#の要約のコメント

はしかし、これはエラーをスローします。ひどく形成XML - 名前が無効な文字で開始された」私は私のC#の概要のコメントにXMLを埋め込むために使用できるエスケープ文字列の任意の並べ替えがあります

答えて

38

?エスケープ標準XMLを使用して例えば:。

<summary>This takes a &lt;token1&gt; and turns it into a &lt;token2&gt;</summary> 

をそれは、入力するか、またはコードとして読み超簡単ではありませんが、IntelliSenseには、これを適切にエスケープし、あなたがツールチップに右、読みやすいものを参照してください

24

使用。 CDATAセクション。例:

<![CDATA[ <name>Bob</name> ]]> 

XMLのサイズが大きい場合、エンティティ参照の特殊文字をエンコードするよりも、よりエレガントで読みやすいです。

埋め込みたいXMLにCDATAセクションが含まれている場合は、another answer on Stack OverflowまたはWikipediaに記載されているように、複数のCDATAセクションを使用する必要があります。あるいは、ここでの他の答えに記述されているように、いつも素朴な実体参照を使うこともできます。

4

VisualStudiosのツールチップにはCDATAセクション内に何も表示されないので、私はエスケープシーケンスを使用します。

2

非常に遅いですが、同じ問題が発生しました。<![CDATA[]]>を使用すると、Intellisenseのコメントが非表示になります。

<>の両方を置き換えることは、私にとってはうってつけです(怠け者:))。 <&lt;に置き換えるだけで、Intellisenseがxmlを無効にし、Intellisenseがサマリーブロックのテキストとして解析するのに適しているため、十分であることがわかりました。ここで

は一例です:

Parse the queue process response 
<?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result> 

/// <summary> 
/// Parse the queue process response 
/// <para>&lt;?xml version="1.0" encoding="utf-16"?>&lt;result success="True">&lt;entity type="resource" operation="update" />&lt;/result></para> 
/// <![CDATA[ 
/// <?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result> 
/// ]]></summary> 
/// <param name="response"></param> 
/// <returns></returns> 

インテリセンスはこれを表示します

関連する問題