我有一个字符串"<Node a="<b>">"
。我只需要转义数据并将此字符串解析为XMLWriter中的节点。因此,如何只转义属性值“&lt;”并注意XML结构的“&lt;”。
答案 0 :(得分:2)
using (var writer = XmlWriter.Create(Console.Out))
{
writer.WriteStartElement("Node");
writer.WriteAttributeString("a", "<b>");
}
输出<Node a="<b>" />
首先你应该解析字符串。由于这不是有效的xml,因此不能使用xml解析器。你可以尝试HtmlAgilityPack。然后你可以用xml writer编写值。
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);
}