htmlagility pack を使用して html 文字列を解析し、特定のパターンをリンクに変換しています。
HTML 文字列とパターン「mystring」が与えられます。hrml 文字列内のこのパターンの出現箇所を に置き換える必要があります<a href="/mystring.html>mystring</a>
。ただし、2 つの例外があり
ます。1. パターンが既にアンカー タグ内にある場合は、パターンを置換しないでください。つまり、直接の親またはレベルの親をアンカー タグにすることはできません。例: <a href="google.com><span>mystring</span><\a>
2. href 内にあってはなりません。例のため<a href="mystring">
に。
- 入力文字列:
"<li><span>mystring test</span></li><li><a href='#'><span>mystring</span></li</li>"
- 期待される出力:
"<li><span><a href="/mystring.html>mystring</a> test</span></li><li><a href='#'><span>mystring</span></li</li>"
私はhtmlagilitypackを使用して、この文字列をhtmlドキュメントとしてロードし、すべてのテキストを取得し、そのレベルの親がアンカーではないかどうかを調べて置き換えています。すべてがシンプルでうまく機能しました。しかし、ここで問題があります。
入力文字列が次のようなものである場合"li><span>mystring test < 10 and 5</span></li>"
、問題があります。Htmlagility パーサーは、小なり記号を html 特殊文字と見なし、「< 10 と 5」を html タグと見なして、次のようなものを生成します。
< 10="" and="" 5=""> (値が空の属性)。
htmlagilityparser を使用してこれを回避する方法はありますか? 一歩下がって正規表現を使用する必要がありますか? その場合、任意のレベルのアンカー例外をどのように処理すればよいですか? この問題に対するより良いアプローチはありますか?