以 XML 格式格式化字符串并删除无效的属性字符
Posted
技术标签:
【中文标题】以 XML 格式格式化字符串并删除无效的属性字符【英文标题】:Formatting string in XML format and remove invalid attribute characters 【发布时间】:2016-05-02 09:45:35 【问题描述】:我有一个字符串说"<Node a="<b>">"
。我只需要转义数据并将此字符串解析为 XMLWriter 中的节点。因此如何仅转义属性值“
【问题讨论】:
类似<Node a="&lt;b&gt;">
?
这不是自动发生的吗?如果您使用 InnerText
或 Value
属性,它会自动转义。如果您从其他人那里获得了这些数据,请告诉他们他们的数据格式不正确且无法使用
@codran 是的,我需要为字符串制作类似的东西。
@ManfredRadlwimmer 我不是从 XMLNode 访问它,而是它是一个字符串
【参考方案1】:
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);
【讨论】:
但我不知道元素名称,它本身是字符串形式的。对于前。字符串是以上是关于以 XML 格式格式化字符串并删除无效的属性字符的主要内容,如果未能解决你的问题,请参考以下文章