使用错误编码的HTML实体处理“ XML”

时间:2019-08-30 20:02:54

标签: c# asp.net .net xml c#-4.0

我有一个XML文件,用户可以更改它并将某些不同的文本添加到某些属性,然后上传到我的工具。问题在于它们有时在属性的值中包含<>。我想将其更改为&lt;&gt;

例如:

 <title value="Tuition and fees paid with (Percent<5000) by Gender" />

使用以下代码加载此错误会导致错误:

XmlDocument smldoc = new XmlDocument();
xmldoc.LoadXml(xmlString);

我遇到的问题是,我需要可以由用户生成的所有属性都位于<>的html实体中。问题是我不能只做.Replace("<", "&lt;"),因为实际的XML文件需要这些。

这如何轻松完成?代码是C#.Net。

1 个答案:

答案 0 :(得分:1)

为什么首先要允许用户向您发送无效的XML?您应拒绝此类输入。用户是否没有更合适的格式来发送此数据?像“键:值”字符串列表一样?

无论如何,您都可以通过replace方法解决此问题,只需确保在第一个<>之后开始,然后再停止。

类似这样的东西:

var trimmedXml = xmlString.Trim(); // to remove whitespace at either end

var innerText = trimmedXml.Substring(1, trimmedXml.Length -1);
innerText = innerText.Replace("<", "&lt").Replace(">", "&gt;");

xmlString = trimmedXml[0] + innerText + trimmedXml[trimmedXml.Length -1];

当然,您需要验证“ XML”字符串至少包含</>