在 VB.NET 中使用 XmlWriter 添加 noNamespaceSchemaLocation

问题描述 投票:0回答:1

我必须构建一个 xml 作为收到 postscript 文件的确认。我已经完成了所有代码,但示例显示了一个非命名空间,我无法正确显示它。

示例如下所示:

<CapCommsStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CapCommsStatus_v1.xsd">

我最近要做的是:

<CapCommsStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" p2:noNamespaceSchemaLocation="CapCommsStatus_v1.xsd" xmlns:p2="xsi">

        Dim writersettings As New XmlWriterSettings
        Dim writer
        With writersettings
            .Indent = True
            .IndentChars = vbTab
            .NewLineChars = vbCrLf
            .NewLineHandling = NewLineHandling.Replace
            .Encoding = New UTF8Encoding(False)
        End With
        writer = XmlWriter.Create(outputName, writersettings)
        writer.WriteStartDocument(True)
        writer.WriteStartElement("CapCommsStatus")
        writer.WriteAttributeString("xmlns", "xsi", "http://www.w3.org/2000/xmlns/", "http://www.w3.org/2001/XMLSchema-instance")
        writer.WriteAttributeString("xsi", "noNamespaceSchemaLocation", vbNull, "CapCommsStatus_v1.xsd")
xml vb.net xmlwriter
1个回答
0
投票

请尝试以下使用 LINQ to XML API 的解决方案。自 2007 年起,它就在 .Net Framework 中可用。

VB.NET

Sub Main
    Dim xsi As XNamespace = "http://www.w3.org/2001/XMLSchema-instance"
    Dim xelem As XElement = New XElement("CapCommsStatus", _
        New XAttribute(XNamespace.Xmlns + "xsi", xsi.ToString()), _
        New XAttribute(xsi + "noNamespaceSchemaLocation", "CapCommsStatus_v1.xsd"))
    Console.WriteLine(xelem)
End Sub

输出

<CapCommsStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:noNamespaceSchemaLocation="CapCommsStatus_v1.xsd"/>
© www.soinside.com 2019 - 2024. All rights reserved.