我想以这种格式“name1:name2:name3”使用命名空间,但是当我尝试在我的vb类中使用它时
Namespace name1:name2:name3
Partial Public Class Message
End class
End namespave
我收到错误:预期声明。
我无法控制命名空间,因此我无法更改它。
提前致谢!
修改
我使用xsd.exe从xsd自动生成一个类。我使用n开关来设置命名空间。我从提供xsd的组织中获取命名空间,命名空间的形式为“ukm:sst:collection:detail”。我必须在我的类中使用它来从验证的类中获取xml序列化。
我的xml应该是这样的
<?xml version="1.0" encoding="UTF-8" ?>
<message xmlns="ukm:sst:collection:detail" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="ukm:sst:collection:detail">
EDIT2
我的课程:
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="ukm:sst:collection:detail"), _
System.Xml.Serialization.XmlRootAttribute("melding", [Namespace]:="ukm:sst:collection:detail", IsNullable:=False)> _
Partial Public Class Message
但我的xml缺少xsi:schemaLocation属性
我的xml看起来像:
<?xml version="1.0" encoding="utf-8"?>
<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="ukm:sst:collection:detail">
但xml应如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<message xmlns="ukm:sst:collection:detail" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="ukm:sst:collection:detail test_v2_0.xsd">
我在自动生成的类中有Imports System.Xml.Serialization。
我做错了什么?
答案 0 :(得分:1)
我认为您将 VB.Net 类命名空间与 Xml 命名空间混淆。这两者不是同一回事。
如果你想在类的Xml输出中使用命名空间,你应该使用XmlRoot
属性,并在那里指定命名空间:
<XmlRoot(Namespace:="ukm:sst:collection:detail")>
Public Class Message
End Class
NB:您需要在课程页面中导入System.Xml.Serialization
。
基于Edit2,为了获取SchemaLocation,您似乎需要向包含它的类添加属性,并使用XmlAttribute
指定它(从this回答) :
<XmlRoot(Namespace:="ukm:sst:collection:detail")>
Public Class Message
<XmlAttribute("schemalocation", Namespace:=XmlSchema.InstanceNamespace)>
public string SchemaLocation = "ukm:sst:collection:detail test_v2_0.xsd"
End Class
答案 1 :(得分:1)
您不能在VB.NET命名空间中使用逗号(,
)或冒号(:
)。正如MSDN中所述,Namespace应该是:
“标识命名空间的唯一名称。必须是有效的Visual Basic标识符”
有效的Visual Basic标识符不得包含此类字符:
“它必须只包含字母字符,十进制数字和下划线。” [Reference]