Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Xml.XmlException:The';:';名称中不能包含十六进制值0x3A的字符_C#_Xml - Fatal编程技术网

C# System.Xml.XmlException:The';:';名称中不能包含十六进制值0x3A的字符

C# System.Xml.XmlException:The';:';名称中不能包含十六进制值0x3A的字符,c#,xml,C#,Xml,因此,我使用C#创建一个XML文档,并使用System.XML.Linq包 我想在xml中设置一个包含字符“:”的值 prefix:myVar 我的代码如下所示: node.setAttribute("prefix:myVar", "myVarValue"); 其中,节点是一个元素 当执行该行时,我得到以下异常: System.Xml.XmlException: The ':' character, hexadecimal value 0x3A, ca

因此,我使用C#创建一个XML文档,并使用System.XML.Linq包

我想在xml中设置一个包含字符“:”的值

prefix:myVar
我的代码如下所示:

node.setAttribute("prefix:myVar", "myVarValue");
其中,
节点
是一个
元素

当执行该行时,我得到以下异常:

System.Xml.XmlException: The ':' character, hexadecimal value 0x3A, cannot be included in a name.

我猜这是因为字符串
前缀:myVar
包含字符
。有办法解决这个问题吗?

不允许将
作为名称的一部分,因为保留它是为了将名称空间前缀与本地名称分开。在此上下文中,
prefix
是名称空间前缀,
myVar
是本地名称

前缀只有在它出现的元素的范围内声明,并且它需要有一个关联的名称空间时才有效——在您的示例中省略了这个名称空间,因此我将使用
http://example.com/
以说明:

XNamespace ex=”http://example.com/";
var元素=新元素(“foo”,
新的XAttribute(XNamespace.Xmlns+“前缀”,ex),
新的XAttribute(ex+“myVar”、“value”);
注意属性的名称是
ex+“myVar”
。这将创建如下元素:

node.setAttribute("prefix:myVar", "myVarValue");

我已经使用上面的
newxattribute(XNamespace.Xmlns+“prefix”,ex)
显式添加了声明,但请注意这不是必需的。如果您省略它,则将为您生成一个:

XNamespace ex=”http://example.com/";
var元素=新元素(“foo”,
新的XAttribute(ex+“myVar”、“value”);
这将导致:



这两个输出在语义上是相同的。

不允许将
作为名称的一部分,因为保留它是为了将名称空间前缀与本地名称分开。在此上下文中,
prefix
是名称空间前缀,
myVar
是本地名称

前缀只有在它出现的元素的范围内声明,并且它需要有一个关联的名称空间时才有效——在您的示例中省略了这个名称空间,因此我将使用
http://example.com/
以说明:

XNamespace ex=”http://example.com/";
var元素=新元素(“foo”,
新的XAttribute(XNamespace.Xmlns+“前缀”,ex),
新的XAttribute(ex+“myVar”、“value”);
注意属性的名称是
ex+“myVar”
。这将创建如下元素:

node.setAttribute("prefix:myVar", "myVarValue");

我已经使用上面的
newxattribute(XNamespace.Xmlns+“prefix”,ex)
显式添加了声明,但请注意这不是必需的。如果您省略它,则将为您生成一个:

XNamespace ex=”http://example.com/";
var元素=新元素(“foo”,
新的XAttribute(ex+“myVar”、“value”);
这将导致:



这两个输出在语义上完全相同。

请参阅我今天早些时候的回答:您需要使用命名空间。抱歉,我不明白您的备注setAttribute采用的是XName而不是XNamespace属性。前缀是命名空间。请参阅我今天早些时候的回答:您需要使用命名空间。抱歉,我不理解您的备注setAttribute采用XName而不是XNamespace属性。前缀是命名空间。但在您的示例中,是否可以只获取此
不,这不是格式良好的XML。声明必须出现在此元素或父元素之一中。但在您的示例中,是否可以只获取此
不,这不是格式良好的XML。声明必须出现在此元素或父元素之一中。