更改 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
我正在尝试创建一个 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