如何通过VB.net在XML中构建名称空间xmlns,xmlns:xsi和模式xsi:schemalocaton?

凯文·亨泽尔

我需要复制一个xml标头:

<XDataFeed 
xmlns="http://foo.com/namespace" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .
xsi:schemaLocation="http://foo.com/namespace C:\fooXSD.XML">

用我的代码:

'Export the object to XML
                Dim writer As New XmlSerializer(DataFeed.GetType)
                Dim ns As New XmlSerializerNamespaces()
                ns.Add("xmlns", "http://foo.com/namespace")
                ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance")
                Dim file As New System.IO.StreamWriter("C:\foo.xml")
                writer.Serialize(file, DataFeed, ns)
                file.Close()

我遇到了两个问题:

  1. 当我尝试添加不带foo.com前缀的命名空间时,它将删除所有命名空间。我上面的代码将foo.com的命名空间添加为:

    xmlns:xmlns =“ http://foo.com/namespace”

这是不正确的。我如何简单地添加没有前缀的名称空间?

  1. 我已经搜索了一个小时,试图弄清楚如何将属性“ xsi:schemaLocation ...”附加到我的xml中,尽管我发现的每个示例都使用c#中的类型,或者对声明的xml doc进行操作,这些操作不适用于我的VB.Net XmlSerializer方法。如何通过上述XmlSerializer代码将schemaLocation属性附加到我的xml?

我非常感谢您的协助。我需要让我的XML通过XSD验证通过才能获得批准,这是阻碍我前进的最后一步。

泰科布

只是自己要做。

不要将您的命名空间添加到中XmlSerializerNamespaces相反,只需将其放在父对象上即可。这应该使它没有前缀而只是xmlns="http://..."

<XmlRoot(Namespace:="http://foo.com/namespace")>
Public Class XDataFeed
    '...
End Class

如果由于某种原因它像一个虚拟前缀那样拍打d1p1,请string.Empty为您的前缀使用并继续,然后将您的名称空间添加到XmlSerializerNamespaces

为了显示SchemaLocation,您可以创建一个哑属性并相应地对其进行标记:

<XmlAttribute("schemaLocation", NameSpace:=XmlSchema.InstanceNamespace)>
Public Property SchemaLocation As String
    Get
        Return "http://foo.com/namespace C:\fooXSD.XML"
    End Get
    Set(value As String)
        'Ignore... pureley needed for serialization.
    End Set
End Property

您已经添加了xsi名称空间,因此如果您继续这样做,它应该可以正常工作。只需取出您的xmlns名称空间。

最后,您应该得到一个这样的类:

<XmlRoot(Namespace:="http://foo.com/namespace")>
Public Class XDataFeed

    <XmlAttribute("schemaLocation", NameSpace:=XmlSchema.InstanceNamespace)>
    Public Property SchemaLocation As String
        Get
            Return "http://foo.com/namespace C:\fooXSD.XML"
        End Get
        Set(value As String)
            'Ignore... pureley needed for serialization.
        End Set
    End Property

End Class

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JAXB生成的xml中的“ xsi:type”和“ xmlns:xsi”

来自分类Dev

xmlns,xmlns:xsi,xsi:schemaLocation和targetNamespace?

来自分类Dev

如何使用 xmlns:xsi 但没有前缀创建根节点?

来自分类Dev

如何用内联xmlns声明替换XML名称空间前缀?

来自分类Dev

'xmlns:xsi'是重复的属性名称

来自分类Dev

XSL如何从HTML输出中摆脱xmlns名称空间声明?

来自分类Dev

如何在SQL Server中添加或更改Xml命名空间/名称表达式中不能使用“ xmlns”

来自分类Dev

如何从xml数据获取名称空间'xsi:type'的节点值?

来自分类Dev

如何通过vb.net中的xmpp dll连接Facebook?

来自分类Dev

如何通过vb.net中的xmpp dll连接Facebook?

来自分类Dev

为什么是xmlns:xsi,而不仅仅是XML文档中的xsi?

来自分类Dev

如何通过VB.NET禁用“声音静音”选项?

来自分类Dev

通过XSD中的xsi:nil =“ true”和nillable =“ true”来清空XML元素?

来自分类Dev

如何在XML模式中将xsi:type定义为属性?

来自分类Dev

如何从xml请求中删除xmlns =“”

来自分类Dev

如何从xml请求中删除xmlns =“”

来自分类Dev

如何在SOAP :: Lite生成的XML中删除xsi前缀?

来自分类Dev

向XML元素添加其他xmlns:xsi属性

来自分类Dev

如何从xml和Java中的根元素中删除xmlns属性

来自分类Dev

如何通过vb.Net中的外部扬声器播放声音?

来自分类Dev

如何通过vb.net在单词页眉/页脚中插入多个项目?

来自分类Dev

如何通过在vb.net中单击按钮来检查datagridview单元是否为空?

来自分类Dev

如何通过vb.net中的label.Text执行数据

来自分类Dev

如何通过使用VB.net中的编码来更改对象的位置(x,y)?

来自分类Dev

如何通过DataGridView在VB.NET中从Matlab使用Load Data .dat

来自分类Dev

如何通过Citrix客户端自动下拉Vb.net中的DateTimePicker

来自分类Dev

如何在VB.NET中通过标签名获取标签页的索引?

来自分类Dev

如何在asp.net vb中通过图像填充Rad组合

来自分类Dev

如何通过vb.net发送电子邮件以编程方式捕获Outlook的异常?

Related 相关文章

  1. 1

    JAXB生成的xml中的“ xsi:type”和“ xmlns:xsi”

  2. 2

    xmlns,xmlns:xsi,xsi:schemaLocation和targetNamespace?

  3. 3

    如何使用 xmlns:xsi 但没有前缀创建根节点?

  4. 4

    如何用内联xmlns声明替换XML名称空间前缀?

  5. 5

    'xmlns:xsi'是重复的属性名称

  6. 6

    XSL如何从HTML输出中摆脱xmlns名称空间声明?

  7. 7

    如何在SQL Server中添加或更改Xml命名空间/名称表达式中不能使用“ xmlns”

  8. 8

    如何从xml数据获取名称空间'xsi:type'的节点值?

  9. 9

    如何通过vb.net中的xmpp dll连接Facebook?

  10. 10

    如何通过vb.net中的xmpp dll连接Facebook?

  11. 11

    为什么是xmlns:xsi,而不仅仅是XML文档中的xsi?

  12. 12

    如何通过VB.NET禁用“声音静音”选项?

  13. 13

    通过XSD中的xsi:nil =“ true”和nillable =“ true”来清空XML元素?

  14. 14

    如何在XML模式中将xsi:type定义为属性?

  15. 15

    如何从xml请求中删除xmlns =“”

  16. 16

    如何从xml请求中删除xmlns =“”

  17. 17

    如何在SOAP :: Lite生成的XML中删除xsi前缀?

  18. 18

    向XML元素添加其他xmlns:xsi属性

  19. 19

    如何从xml和Java中的根元素中删除xmlns属性

  20. 20

    如何通过vb.Net中的外部扬声器播放声音?

  21. 21

    如何通过vb.net在单词页眉/页脚中插入多个项目?

  22. 22

    如何通过在vb.net中单击按钮来检查datagridview单元是否为空?

  23. 23

    如何通过vb.net中的label.Text执行数据

  24. 24

    如何通过使用VB.net中的编码来更改对象的位置(x,y)?

  25. 25

    如何通过DataGridView在VB.NET中从Matlab使用Load Data .dat

  26. 26

    如何通过Citrix客户端自动下拉Vb.net中的DateTimePicker

  27. 27

    如何在VB.NET中通过标签名获取标签页的索引?

  28. 28

    如何在asp.net vb中通过图像填充Rad组合

  29. 29

    如何通过vb.net发送电子邮件以编程方式捕获Outlook的异常?

热门标签

归档