处理具有错误编码的 HTML 实体"XML"



>我有一个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。

为什么首先允许用户向您发送无效的 XML?您应该拒绝此类输入。没有更合适的格式供您的用户发送此数据吗?喜欢"键:值"字符串列表?

无论如何,您可以通过替换方法解决此问题,只需确保在第一个之后开始并在最后一个<>之前停止。

像这样:

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"字符串是否至少包含</>

最新更新