vb.net - 逗号分隔命名空间名称 - 如何使用它?

标签 vb.net namespaces

我想使用这种格式的命名空间“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”形式。我必须在我的类(class)中使用它来获取我从经过验证的类(class)中序列化的 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">

编辑2

我的课:
<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。

我做错了什么?

最佳答案

我认为您将 VB.Net 类命名空间与 Xml 命名空间混淆了。两者不是一回事。

如果您想在类的 Xml 输出中使用命名空间,则应使用 XmlRoot属性,并在其中指定命名空间:

<XmlRoot(Namespace:="ukm:sst:collection:detail")>
Public Class Message

End Class

注意:您将要导入 System.Xml.Serialization在您的类(class)页面中。

根据您的 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

关于vb.net - 逗号分隔命名空间名称 - 如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016360/

相关文章:

vb.net - 捕获System.AccessViolationException

c++ - 为什么(不相关的)using 声明可以通过参数依赖查找调和重载歧义?

namespaces - 命名空间是否会影响每个实体组每次写入的 1 秒?

.net - 使用线程监听 UDP 广播

.net - 自定义控件(groupbox、picturebox、label)——鼠标进入,内部消失

c# - 类修饰符

visual-studio-2015 - VS studio 2015 从项目或解决方案中删除未使用的用途

具有命名空间的 Javascript 模块模式

parsing - xmllint - 使用命名空间解析 xml 文件

asp.net大文件下载内存不足异常