xmlnode = xmldoc.CreateElement(dRow.ItemArray.GetValue(0).ToString());
xmlroot.AppendChild(xmlnode);
xmlnode.InnerText = sub;
您可以使用:
string name = XmlConvert.EncodeName(dRow.ItemArray.GetValue(0).ToString());
xmlnode = xmldoc.CreateElement(name);
然而,正如Jon所指出的那样,这是非常不寻常的 - 编码后的名称并不美观;例如a=b
会变成a_x003D_b
。
dRow.ItemArray.GetValue(0).ToString()
的值。由于包含了一个=
符号,听起来它并不是一个有效的元素名称。当您尝试将 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 [ \ ] ^**
标题就是你的答案。在名称中不能使用“=”。