2016-01-14 2 views
1

Извините мое невежество, но я только начинаю с VB, и вот мои основные сомнения. Я много искал, но я не могу найти решение. Я использую этот код:Как написать короткий тег конца XML вместо длинного тега конца?

Imports System 
Imports System.Xml 

Public Class Form1 

    Private Sub saveXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles saveXML.Click 
    Dim settings As New XmlWriterSettings() 
    settings.Indent = True 

    Dim XmlWrt As XmlWriter = XmlWriter.Create("MyName.xml", settings) 

    With XmlWrt 
     .WriteStartDocument() 
     .WriteComment("XML Database.") 
     .WriteStartElement("Production") 
     .WriteStartElement("Order") 
     .WriteStartElement("Attribute") 
     .WriteAttributeString("Type", "Order ID") 
     .WriteAttributeString("Value", txtFullName.Text.ToString()) 
     .WriteFullEndElement() 
     .WriteStartElement("Email") 
     .WriteString(txtEmailAddress.Text.ToString()) 
     .WriteEndElement() 
     .WriteStartElement("Tel") 
     .WriteString(txtPhoneNumber.Text.ToString()) 
     .WriteEndElement() 
     .WriteEndElement() 
     .WriteEndDocument() 
     .Close() 
    End With 

    MessageBox.Show("XML file saved.") 
    End Sub 
End Class 

И с этой частью:

.WriteStartElement("Attribute") 
.WriteAttributeString("Type", "Order ID") 
.WriteAttributeString("Value", txtFullName.Text.ToString()) 
.WriteFullEndElement() 

я получаю это:

<Attribute Type="Order ID" Value="5"></Attribute> 

Как вы заметили, я не набирайте метод .WriteEndElement() в порядке чтобы не показывать тег концевого элемента:

</Attribute> 

Как я могу написать "/" и получите это:

<Attribute Type="OrderId" Value="5"/> 

ответ

3

Вы должны использовать WriteEndElement() вместо WriteFullEndElement() производить

<Attribute Type="Order ID" Value="5" /> 

вместо

<Attribute Type="Order ID" Value="5"></Attribute>. 

Но, может быть, вы хотите использовать XML-литералы, что делает его еще проще:

Dim xml = <?xml version="1.0" encoding="utf-8"?> 
      <Production> 
      <Order> 
       <Attribute Type="Order ID" Value=<%= txtFullName.Text %> /> 
       <Email><%= txtEmailAddress.Text%></Email> 
       <Tel><%= txtPhoneNumber.Text %></Tel> 
      </Order> 
      </Production> 

xml.Save("MyName.xml") 
+0

Это отвечает на вопрос ОП, но вы также должны заметить, что любое программное обеспечение для получения, которое отличает эти две формы, сломано и не может претендовать на обработку XML, как определено стандартом. – kjhughes