我想使用这种格式的命名空间“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/