当我将字符串xml加载到XmlDocument对象中时,它会引发
“〈”(十六进制值0x3C)是无效的属性字符。
string xml= Request.Form["webformfield"] + string.Empty;
// it will read the input from webform in encoded format
e.g:
<Models><Model ModelID="F2434" ModelName="FTest 1 & Income MP" />
try around:
//decoded the whole string
StringWriter sw = new StringWriter();
Server.HtmlDecode(models, sw); // this is an internal method of the framework.
models = sw.ToString();
after decoding the string, the string will be stored below
//string xml = "<Models><Model ModelId=\"124\" ModelNameWithSpecialCHars=\"Test1 <> & \"' characters \"/><Model ModelId=\"124\" ModelNameWithSpecialCHars=\"Test2 <> & \"' characters \"/></Models>";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
Console.WriteLine(xmlDocument.OuterXml);
我已经在运行时手动更改了xml字符串,它工作了。从字符串中更改了ModelNameWithSpecialCHars属性的值。添加了字符串图像,因为当我编写编码的特殊字符时,它以解码格式显示。找到下面的代码。
变更字符串:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
Console.WriteLine(xmlDocument.OuterXml);
Console.ReadLine();
有没有什么方法可以只对字符串的特定部分进行编码
string xml = "<Models><Model ModelId=\"124\" ModelNameWithSpecialCHars=\"Tes <> & \"' characters \"/></Models>";
在上面的字符串中,我只需要编码ModelNameWithSpecialCHars属性的值。(“Tes〈〉&”')
1条答案
按热度按时间iyfamqjs1#
当然可以--只需将需要编码的部分放在一个单独的变量中,然后使用
WebUtility.HtmlEncode
方法(在System.Net
中找到):尽管您可能会发现使用
XmlDocument
类添加元素和属性更简洁,因为您最终还是希望有一个XmlDocument
,并且它会将文本编码为有效的XML,这对转义的要求略有不同(尽管对于测试字符串来说它们是等效的)。