'='字符,十六进制值0x3D,不能包含在名称中

时间:2011-05-04 06:09:19

标签: c# .net xml

 xmlnode = xmldoc.CreateElement(dRow.ItemArray.GetValue(0).ToString());
 xmlroot.AppendChild(xmlnode);     
 xmlnode.InnerText = sub;  

4 个答案:

答案 0 :(得分:6)

您可以使用:

string name = XmlConvert.EncodeName(dRow.ItemArray.GetValue(0).ToString());

获取安全的编码名称,然后

xmlnode = xmldoc.CreateElement(name);

然而;正如乔恩所说,这是非常不寻常的 - 编码的名字并不漂亮;例如,a=b变为a_x003D_b

答案 1 :(得分:4)

查看dRow.ItemArray.GetValue(0).ToString()的值。由于包含=符号,听起来它不是有效的元素名称。

创建一个具有动态从数据中提供的名称的元素是相对罕见的。通过这种方式指定元素的内容更为常见。

你到底想要达到什么目的?你的排名是什么?

答案 2 :(得分:1)

当您尝试将Microsoft目录导出到XML时,无法导入生成的文件,并且您收到以下错误消息 “XML文件路径/文件名在行中包含错误。”“名称包含无效字符。” 如果使用Microsoft Visual Studio .NET验证XML目录,则会收到以下错误消息: “''('字符,十六进制值0x28,不能开始名称。行#,位置#” 出现此问题的原因是Commerce Server导出不编码以下特殊字符:

The range 0x0021 – 0x002F includes ! “ # $ % & ‘ ( ) * + , - . /
The range 0x03A – 0x0040 includes : ; < = > ? @
The range 0x007B – 0x007E includes { | } ~
The range 0x005B – 0x005E [ \ ] ^**

答案 3 :(得分:0)

标题是你的答案。你不能在名字中使用'='。