在我的 C# 应用程序中,我正在根据数据库值创建一个 xml。它工作正常,直到字符串不是特殊字符。下面是我的代码。
XmlDocument doc = new XmlDocument();
XmlElement element = doc.CreateElement("NewDataSet");
------
string itemname =System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["itemname"].ToString());
fieldElement = doc.CreateElement(itemname);
fieldElement.InnerText = ds.Tables[0].Rows[j]["count"].ToString();
fieldElement1.AppendChild(fieldElement);
我在“fieldElement = doc.CreateElement(itemname);”中遇到错误 as 名称中不能包含“”字符(十六进制值 0x20)。 抛出异常的字符串是“Adam & Eva frisør”。
谁能告诉我如何克服这个问题。
最佳答案
这里有两个可能的问题。首先,您对元素名称进行 html 编码。这将正常工作,直到元素名称包含特殊字符。
The element tags are case-sensitive; the beginning and end tags must match exactly. Tag names cannot contain any of the characters !"#$%&'()*+,/;<=>?@[]^`{|}~, nor a space character, and cannot start with -, ., or a numeric digit.
所以,这是一个等待发生的错误。确保名称有效且不包含任何特殊字符。
其次,您没有转义元素的内容。您引用的文本包含未转义的 &
。这导致了您收到的实际错误。使用与元素文本的元素名称相同的转义方法。
fieldElement.InnerText = System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["count"].ToString());
fieldElement1.AppendChild(fieldElement);
关于c# - 内部文本中具有特殊字符的 XmlElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520836/