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

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

6

您可以使用:

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

为了获得一个安全的编码名称,然后
xmlnode = xmldoc.CreateElement(name);

然而,正如Jon所指出的那样,这是非常不寻常的 - 编码后的名称并不美观;例如a=b会变成a_x003D_b


4
请看dRow.ItemArray.GetValue(0).ToString()的值。由于包含了一个=符号,听起来它并不是一个有效的元素名称。
动态从数据中创建具有名称的元素相对较少见。更常见的方法是以这种方式指定元素的内容。
你究竟想要实现什么?你的行中有什么?

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 [ \ ] ^**

-2

标题就是你的答案。在名称中不能使用“=”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接