我必须构建一个 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")
请尝试以下使用 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"/>