2

私は次のようにxpath文字列の引用符をエスケープしようとしています:

var mktCapNode = htmlDoc.DocumentNode.SelectSingleNode("//*[@id=""yfs_j10_a""]"); 

渡したい実際の文字列は次のとおりです。

//*[@id="yfs_j10_a"]

これにより、コンパイラエラーが発生) expectedします。; expected

簡単だと思いますが、困惑しています。何か案は?

4

4 に答える 4

7

""をエスケープとして使用するには、これを逐語的な文字列にする必要があります

@"//*[@id=""yfs_j10_a""]"

通常の文字列リテラルの場合、二重引用符をエスケープするには円記号を使用する必要があります

"//*[@id=\"yfs_j10_a\"]"
于 2012-04-30T16:56:17.560 に答える
2

または、エスケープ文字'\'を使用します。

"//*[@id=\"yfs_j10_a\"]"
于 2012-04-30T17:02:25.203 に答える
1

@文字列にプレフィックスを追加します。

@"//*[@id=""yfs_j10_a""]"

または引用符をエスケープします\

"//*[@id=\"yfs_j10_a\"]"
于 2012-04-30T16:57:43.877 に答える
1

C#では、\文字を使用してエスケープします(ドキュメントを参照)。これは、「」にエスケープする「」以外にエスケープ文字がないVBとは異なります。

つまり、C#では、新しい行を開始するためにvbCrLfを使用したり、文字列にタブ文字を追加するためにvbTabを使用したりする必要はありません。代わりに「\r\n」と「\t」を使用してください。

@文字を使用して文字列をリテラルにすることもできますが、これは引用符では機能しないと思います。

于 2012-04-30T17:14:25.103 に答える