У меня есть строка "<Node a="<b>">"
. Мне нужно экранировать только данные и проанализировать эту строку как узел в XMLWriter. Следовательно, как избежать только значения атрибута «‹» и отметить «‹» структуры XML.
Форматирование строки в формате XML и удаление недопустимых символов атрибута
Ответы (1)
using (var writer = XmlWriter.Create(Console.Out))
{
writer.WriteStartElement("Node");
writer.WriteAttributeString("a", "<b>");
}
Выход <Node a="<b>" />
Во-первых, вы должны проанализировать строку. Поскольку это недопустимый xml, вы не можете использовать синтаксический анализатор xml. Вы можете попробовать HtmlAgilityPack. Затем вы можете записать значения с помощью средства записи xml.
string s = "<Node a=\"<b>\">";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(s);
var node = doc.DocumentNode.FirstChild;
var attr = node.Attributes[0];
using (var writer = XmlWriter.Create(Console.Out))
{
writer.WriteStartElement(node.Name);
writer.WriteAttributeString(attr.Name, attr.Value);
}
person
Alexander Petrov
schedule
02.05.2016
Но я не знаю имени элемента, а оно само в строковой форме. Для экс. строка ‹Node a=‹b››
- person B V Raman; 03.05.2016
Я думаю, что это сработает, но в случае нескольких атрибутов нам придется изменить логику.
- person B V Raman; 09.05.2016
<Node a="<b>">
? - person yaakov   schedule 02.05.2016InnerText
илиValue
, оно автоматически экранируется. Если вы получили эти данные от кого-то другого, скажите им, что их данные искажены и непригодны для использования. - person Manfred Radlwimmer   schedule 02.05.2016