C# innertext中具有特殊字符的XmlElement

C# innertext中具有特殊字符的XmlElement,c#,xml,xml-parsing,C#,Xml,Xml Parsing,在我的c#应用程序中,我基于数据库值创建了一个xml。直到字符串不是一个特殊的字符,它才能正常工作。下面是我的代码 XmlDocument doc = new XmlDocument(); XmlElement element = doc.CreateElement("NewDataSet"); ------ string itemname =System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["itemname"].ToStr

在我的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)中得到错误; 由于名称中不能包含“”字符(十六进制值0x20)。 引发异常的字符串是“Adam&Eva Frissør”

谁能告诉我如何克服这个问题

我在fieldElement.InnerText=中得到错误的地方

我强烈怀疑这不是你得到错误的地方。考虑到“不能包含在名称中”的部分,我怀疑这就是问题所在:

fieldElement = doc.CreateElement(itemname);
可以将任意文本作为文本,但不能作为元素名称。从数据中创建元素名也是不常见的。您确定不想要以下内容:

fieldElement = doc.CreateElement("itemname");

&
需要作为
&否则它是无效的XML


在将数据库文本放入元素之前,应该对其进行XML编码。请参见如何执行此操作。

这里有两个可能的问题。首先,对元素名称进行html编码。在元素名称包含特殊字符之前,这将正常工作

元素标记区分大小写;开始和结束标记必须是 完全匹配。标记名不能包含任何字符 !“#$%&'()*+,/;?@[]^`{124;}~,也不是空格字符,并且不能开始 使用-、、或数字

因此,这是一个等待发生的错误。请确保名称有效且不包含任何特殊字符

其次,您没有转义元素的内容。您引用的文本包含一个未转义的
&
。这会导致您收到的实际错误。请使用与元素文本的元素名称相同的转义方法

fieldElement.InnerText = System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["count"].ToString());
fieldElement1.AppendChild(fieldElement);

我正在接收itemname=“Adam&Eva frisør”。。此字符串必须创建为xmlelemnt。此处我收到错误。我正在接收itemname=“Adam&Eva frisør”。。此字符串必须创建为xmlelemnt。此处我收到错误。@user642378:理解。
在属性值或元素中是非法的。我正在接收itemname=”亚当和伊娃·弗里瑟尔".. 此字符串必须创建为xmlelemnt。我在这里遇到了错误。您的问题可能是我描述的第一个问题。您在
itemname
中使用了无效字符。不能有空格或
&
。不确定特殊字符
ø
,但它是Unicode字符,应该可以接受。替换或删除itemname中的特殊字符,或重新编写xml,使该值成为节点的属性值或内容。
&
和``(空格)对xml元素无效