更改 xml 命名空间 (VB)

change xml namespace (VB)

我正在尝试创建一个 XML 文档。 我已经成功创建了文档,但是我似乎无法弄清楚如何将默认的 xmlns 更改为其他内容。 这是我的代码

Imports System.Xml

Public Class Form1  

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim writer As New XmlTextWriter("product.xml", System.Text.Encoding.UTF8)
        writer.WriteStartDocument(True)
        writer.Formatting = Formatting.Indented
        writer.Indentation = 2
        writer.WriteStartElement("_-SAPMP_-PPCC2PRETT01")
        writer.WriteStartElement("IDOCBEGIN", 1)
        createNode("00B-021-5088", "BRL1", "KG", "1000", writer)
        writer.WriteEndElement()
        writer.WriteEndDocument()
        writer.Close()
    End Sub
    Private Sub createNode(ByVal pID As String, ByVal pName As String, ByVal pName2 As String, ByVal pPrice As String, ByVal writer As XmlTextWriter)
        writer.WriteStartElement("E1BP_PP_TIMETICKET", "E1BP_PP_TIMETICKET")
        writer.WriteStartElement("ORDERID")
        writer.WriteString(pID)
        writer.WriteEndElement()
        writer.WriteStartElement("PLANT")
        writer.WriteString(pName)
        writer.WriteEndElement()
        writer.WriteStartElement("CONF_QUAN_UNIT")
        writer.WriteString(pName2)
        writer.WriteEndElement()
        writer.WriteStartElement("YIELD")
        writer.WriteString(pPrice)
        writer.WriteEndElement()
        writer.WriteEndElement()
    End Sub

End Class

这导致以下 XML 文件:

我希望它看起来像:

WriteStartElement的第二个参数是命名空间,不是属性。您应该使用 WriteAttributeString 写出元素的属性。因此,一些更改应该可以满足您的需求:

'...
writer.WriteStartElement("IDOC")
writer.WriteAttributeString("BEGIN", "1")
'...
writer.WriteStartElement("E1BP_PP_TIMETICKET")
writer.WriteAttributeString("SEGMENT", "E1BP_PP_TIMETICKET")

如果我没看错你的问题,你需要做的就是添加这一行:

writer.Namespaces = false;

https://msdn.microsoft.com/en-us/library/system.xml.xmltextwriter.namespaces(v=vs.110).aspx