【问题标题】:The '=' character, hexadecimal value 0x3D, cannot be included in a name'=' 字符,十六进制值 0x3D,不能包含在名称中
【发布时间】:2012-02-01 14:52:07
【问题描述】:
 xmlnode = xmldoc.CreateElement(dRow.ItemArray.GetValue(0).ToString());
 xmlroot.AppendChild(xmlnode);     
 xmlnode.InnerText = sub;  

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    你可以使用:

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

    要获得一个安全的编码名称,然后

    xmlnode = xmldoc.CreateElement(name);
    

    然而;正如 Jon 所指出的,这是非常不寻常的——编码名称并不漂亮;例如a=b 变为a_x003D_b

    【讨论】:

      【解决方案2】:

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

      使用从数据中动态给出的名称来创建元素是比较少见的。以这种方式指定元素的 content 更为常见。

      您到底想达到什么目的?你的行是什么?

      【讨论】:

        【解决方案3】:

        当您尝试将 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 [ \ ] ^**
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-27
            • 1970-01-01
            相关资源
            最近更新 更多