У меня есть следующий кодКак специальные символы экранирования в C#
XElement element = new XElement("test", "a&b");
где
element.LastNode
содержит значение "a&b"
.
Я хотел быть этим "a&b"
.
Как это заменить?
У меня есть следующий кодКак специальные символы экранирования в C#
XElement element = new XElement("test", "a&b");
где
element.LastNode
содержит значение "a&b"
.
Я хотел быть этим "a&b"
.
Как это заменить?
Попробуйте следующее:
public static string GetTextFromHTML(String htmlstring)
{
// replace all tags with spaces...
htmlstring= Regex.Replacehtmlstring)@"<(.|\n)*?>", " ");
// .. then eliminate all double spaces
while (htmlstring).Contains(" "))
{
htmlstring= htmlstring.Replace(" ", " ");
}
// clear out non-breaking spaces and & character code
htmlstring = htmlstring.Replace(" ", " ");
htmlstring = htmlstring.Replace("&", "&");
return htmlstring;
}
использовать HTML Agility Pack вместо http://htmlagilitypack.codeplex.com/ – Jodrell
& является зарезервированным характер так будет ВСЕГДА быть закодирован. Таким образом, вы должны расшифровать:
Это вариант: HttpUtility.HtmlDecode Method (String)
Использование:
string decoded = HttpUtility.HtmlDecode("a&b");
// returns "a&b"
это работает, но я не могу присвоить это строковое значение Xelement.Lastnode – user2392525
Конечно, вы можете. Но он будет автоматически закодирован. –
вы могли бы просто прочитайте 'element.Value', вы должны быть осторожны в HTML-декодировании XML. Он отлично работает для '&', но не все символы получают экранированные одинаковым образом по обоим стандартам. – Jodrell
Подождите,
< тест> а & б </тест>
Недействительный XML. Вы не можете заставить XML выглядеть так. Это clarified by the XML standard.
&
имеет особое значение, это означает экранированный символ, который в противном случае может быть недействительным. Символ '&'
кодируется как &
в формате XML.
для чего это стоит, это недопустимо HTML по той же причине.
<! DOCTYPE HTML> < HTML> < тело> а & б </тело> </html>
Если я пишу код,
const string Value = "a&b";
var element = new XElement("test", Value);
Debug.Assert(
string.CompareOrdinal(Value, element.Value) == 0,
"XElement is mad");
он работает без ошибок, XElement
кодирует и декодирует в XML и из него по мере необходимости.
Чтобы освободить или декодировать элемент XML, вы просто читаете XElement.Value
.
Если вы хотите, чтобы документ, который выглядит как
< тест> а & б </тест>
вы можете, но это не XML или HTML, инструменты для работы с HTML или XML не намеренно поможет вам. Вы создадите своих собственных читателей, писателей и парсеров.
На каком языке вы работаете? –
Я использую C# .net – user2392525
Я попытался сделать элемент XElement = новый XElement ("test", HttpUtility.HtmlDecode ("a &b")); – user2392525