c# - 解析包含非法字符的 XML

标签 c# xml

我从服务器收到的消息包含标签,标签中是我需要的数据。

我尝试将负载解析为 XML,但生成了非法字符异常。

我还使用了 httpUtilitySecurity Utility转义非法字符,唯一的问题是,它会转义 < >这是解析 XML 所必需的。

我的问题是,当其中包含的数据包含非法的非 XML 字符时,我该如何解析 XML(& -> amp;) _

谢谢。

例子:

<item><code>1234</code><title>voi hoody & polo shirt + Mckenzie jumper</title><description>Good condition size small - medium, text me if interested</description></item>

最佳答案

如果您只有 & 作为无效字符,那么您可以使用正则表达式将其替换为 &。我们使用正则表达式来防止替换已经存在的 &"o 等符号。

正则表达式可以如下:

&(?!(?:lt|gt|amp|apos|quot|#\d+|#x[a-f\d]+);)

Regular expression visualization

示例代码:

string content = @"<item><code>1234 &amp; test</code><title>voi hoody & polo shirt + Mckenzie jumper&other stuff</title><description>Good condition size small - medium, text me if interested</description></item>";
content = Regex.Replace(content, @"&(?!(?:lt|gt|amp|apos|quot|#\d+|#x[a-f\d]+);)", "&amp;", RegexOptions.IgnoreCase);
XElement xItem = XElement.Parse(content);

关于c# - 解析包含非法字符的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048158/

相关文章:

c# - 确保文本框的第一个和最后一个字符是数字c#

java - DocumentBuilder doc(带有根元素)输出 null,即使附加了根元素

php - 从 mysql 服务器生成用于 iphone 应用程序消费的 XML 不起作用

java - 通过 Maven pom.xml 依赖项中的属性读取版本

php - 如何使用 xpath 从 xml 获取第二个同级

c# - 编写TcpClient client = list.AcceptTcpClient();后程序无法打开。

c# - 如何从 Chrome 和 Firefox 获取打开页面的 URL?

c# - 创建不检查管理员角色声明的策略

xml - SQL Server XML 存在()

c# - MS C# 编译器和非优化代码