格式化XML格式的字符串并删除无效的属性字符

时间:2016-05-02 09:45:36

标签: c# xml string xmlwriter xmlnode

我有一个字符串"<Node a="<b>">"。我只需要转义数据并将此字符串解析为XMLWriter中的节点。因此,如何只转义属性值“&lt;”并注意XML结构的“&lt;”。

1 个答案:

答案 0 :(得分:2)

using (var writer = XmlWriter.Create(Console.Out))
{
    writer.WriteStartElement("Node");
    writer.WriteAttributeString("a", "<b>");
}

输出<Node a="&lt;b&gt;" />

首先你应该解析字符串。由于这不是有效的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);
}