C# System.Xml.XmlException:The';:';名称中不能包含十六进制值0x3A的字符
因此,我使用C#创建一个XML文档,并使用System.XML.Linq包 我想在xml中设置一个包含字符“:”的值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
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。声明必须出现在此元素或父元素之一中。