XML数组中的额外包装器

时间:2013-10-16 15:08:37

标签: xml arrays serialization

我有一个XML文件,我必须在提交数据时匹配。无论我做什么,我最终都会为主阵列提供一个额外的包装器。 XML必须如下所示:

<?xml version="1.0" encoding="utf-8"?>
<contracts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <contract>
        <productType>VSC</productType>
        <contractNumber>ABS1869169</contractNumber>
        <vehicle>
            <vin>JTKDE177160100198</vin>
            <odometer>128135</odometer>
            <purchasePrice>5574</purchasePrice>
      </vehicle>
    </contract>
    <contract>
        <productType>VSC</productType>
        <contractNumber>ABS1865421</contractNumber>
        <vehicle>
            <vin>LTGSE177160154878</vin>
            <odometer>119154</odometer>
            <purchasePrice>6509</purchasePrice>
        </vehicle>
    </contract>
</contracts>

我最终得到了这样的额外合同:

<?xml version="1.0" encoding="utf-8"?>
<contracts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <contracts>
    <contract>
      <productType>VSC</productType>
      <contractNumber>ABS1869169</contractNumber>
      <vehicle>
        <vin>JTKDE177160100198</vin>
        <odometer>128135</odometer>
        <purchasePrice>5574</purchasePrice>
      </vehicle>
    </contract>
    <contract>
      <productType>VSC</productType>
      <contractNumber>ABS1865421</contractNumber>
      <vehicle>
        <vin>LTGSE177160154878</vin>
        <odometer>119154</odometer>
        <purchasePrice>6509</purchasePrice>
      </vehicle>
    </contract>
  </contracts>
</contracts>

这是我的代码。

Public Class contracts

    Public contracts() As contract

End Class


Public Class contract
    Public productType As String = "VSC"
    Public contractNumber As String
    Public vehicle As New contractVehicle
End Class

Public Class contractVehicle
    Public vin As String
    Public odometer As String
    Public purchasePrice As String
End Class


    Dim serializer As New XmlSerializer(GetType(contracts))
    Using stream As Stream = New FileStream("C:\Code\TestXML2.xml", FileMode.Create)
        Dim s As New XmlWriterSettings()
        s.Indent = True
        s.Encoding = Encoding.UTF8
        Dim writer As XmlWriter = XmlTextWriter.Create(stream, s)
        serializer.Serialize(writer, vx)
        writer.Close()
    End Using

1 个答案:

答案 0 :(得分:2)

我终于找到了自己问题的答案。我只需要设置属性。

Public Class contracts

    <XmlElementAttribute("contract", Form:=Xml.Schema.XmlSchemaForm.Unqualified)> _
    Public contracts() As contract

    End Sub

End Class