gpt4 book ai didi

C# 仅从节点文本中转义非法的 xml 字符

转载 作者:行者123 更新时间:2023-11-30 23:23:54 25 4
gpt4 key购买 nike

我正在使用一个 API,由于某些疯狂的原因,返回的 XML 中有 & 字符未正确转义。这让我处于一个恼人的境地。当我尝试使用 XMLDocument 解析 xml 字符串时出现异常。

我可以使用替换来删除字符,但这可能会导致问题。

xml = xml.Replace("&", "&").Replace("&", "&");

问题是最终可能会有一些转义值。像这样的节点会导致上面的代码行搞砸。

<node>Something & something &lt; annoying</node>

如果我将 & 字符替换为 amp;它会破坏 lt;.我不能对 lt 使用相同的方法;正如我对放大器所做的那样,因为这意味着它将转换我仍然需要转义的所有 <> 括号。

这是一个正在制造麻烦的节点。

<CompanyName>Fire & Ice</CompanyName>

最佳答案

您可以使用与 this related question 类似的正则表达式.这本质上匹配所有未转义的符号(即它将匹配 &,但不匹配 &something;)。

var xml = @"<node>Something & something &lt; annoying</node>";

var result = Regex.Replace(xml, @"&(?!\w*;)", "&amp;");

// output: <node>Something &amp; something &lt; annoying</node>

关于C# 仅从节点文本中转义非法的 xml 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com