При условии, что XML не правильно сформирован, поэтому вы не можете манипулировать им с помощью анализатора XML.
Вы можете выполнить предварительную обработку этого текста, чтобы он стал правильно сформированным XML, а затем манипулировать им как XML с помощью механизма XML.
EDIT :
Чтение: RegEx соответствует открытым тэгам, за исключением автономных тэгов XHTML
Но может быть, в вашем случае использование регулярных выражений наиболее целесообразно, если структура входного HTML регулярна, например:
Вы можете использовать это регулярное выражение
(?x)
(?<=<)[^>]*
class="[^"]*
\b(?:addthis_toolbox|addthis_button)\b
[^"]*"
[^>]*
, чтобы найти div class="addthis_toolbox addthis_default_style "
, а затем заменить эту строку, то есть:
string xml = @"<div class=""addthis_toolbox addthis_default_style "">
<a class=""addthis_button_facebook_like"" fb:like:layout=""button_count""></a>
<a class=""addthis_button_tweet""></a>
<a class=""addthis_counter addthis_pill_style""></a>
</div>
";
const string Pattern = @"(?xs)
(?<=<)([^>]*
class=""[^""]*
\b(?:addthis_toolbox|addthis_button)\b
[^""]*"")
[^>]*
";
var result = Regex.Replace(xml, Pattern, "$0 addthis:url=\"value\"");
Результат:
<div class="addthis_toolbox addthis_default_style " addthis:url="value">
<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
<a class="addthis_button_tweet"></a>
<a class="addthis_counter addthis_pill_style"></a>
</div>