VB.NET使用xml序列化数组

hwmweimin 2013-11-26 10:43:46
如何用VB.NET可以使用这样的 XML ,可以是控件台,也可以是生文件

<?xml version="1.0" encoding="gb2312"?>
<PurchaseOrder xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<Item>
<ItemID>aaa111</ItemID>
<ItemPrice>34.22</ItemPrice>
<Item>
<Item>
<ItemID>bbb222</ItemID>
<ItemPrice>2.89</ItemPrice>
<Item>
</Items>
</PurchaseOrder>
...全文
324 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind_cloud2011 2013-11-27
  • 打赏
  • 举报
回复
http://www.java2s.com/Code/VB/XML/XmlSerializerDemo.htm
hwmweimin 2013-11-27
  • 打赏
  • 举报
回复
非常感谢,各位大神的回答: wind_cloud2011 所讲,无错, 我也找到另一个方法 Imports System.IO Imports System.Xml Imports System.Xml.Serialization Module Module1 Sub Main() 'XML序列化对象 Dim serialize As XmlSerializer = New XmlSerializer(GetType(Product_Multiple)) Dim pro1 As Product = New Product("IMB", 1, 10) Dim pro2 As Product = New Product("HP", 2, 20) Dim pros() As Product = New Product() {pro1, pro2} Dim myProduct As Product_Multiple = New Product_Multiple(pros) serialize.Serialize(Console.Out, myProduct) Console.WriteLine() End Sub End Module Public Class Product_Multiple Public Pro_List() As Product Public Sub New() End Sub Public Sub New(ByVal multiProducts() As Product) Me.Pro_List = multiProducts End Sub End Class Public Class Product Public name As String Public productId As Integer Public quantity As Integer Public Sub New() End Sub Public Sub New(ByVal name As String, ByVal productId As Integer, ByVal quantity As Integer) Me.name = name Me.productId = productId Me.quantity = quantity End Sub End Class '生成如下 '<?xml version="1.0" encoding="gb2312"?> '<Product_Multiple xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs 'd="http://www.w3.org/2001/XMLSchema"> ' <Pro_List> ' <Product> ' <name>IMB</name> ' <productId>1</productId> ' <quantity>10</quantity> ' </Product> ' <Product> ' <name>HP</name> ' <productId>2</productId> ' <quantity>20</quantity> ' </Product> ' </Pro_List> '</Product_Multiple>
wind_cloud2011 2013-11-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/kaedei/article/details/3899045
wind_cloud2011 2013-11-27
  • 打赏
  • 举报
回复
如果数据多,那你得用dataset ,将数据先放在dataset ,用dataset.WriteXml
 Dim ds As New DataSet
        ds.DataSetName = "Items"
        Dim dt As New DataTable("Item")
        Dim drow As DataRow
        dt.Columns.Add(New DataColumn("ItemID", GetType(Integer)))
        dt.Columns.Add(New DataColumn("ItemPrice", GetType(Integer)))
        Dim i As Integer
        For i = 3 To 10
            drow = dt.NewRow
            drow("ItemID") = i
            drow(1) = i * i
            dt.Rows.Add(drow)
        Next
        ds.Tables.Add(dt)
        DataGridView1.DataSource = ds.Tables("Item")
        dt.WriteXml("test.xml")
<?xml version="1.0" standalone="yes"?>
<Items>
  <Item>
    <ItemID>3</ItemID>
    <ItemPrice>9</ItemPrice>
  </Item>
  <Item>
    <ItemID>4</ItemID>
    <ItemPrice>16</ItemPrice>
  </Item>
  <Item>
    <ItemID>5</ItemID>
    <ItemPrice>25</ItemPrice>
  </Item>
  <Item>
    <ItemID>6</ItemID>
    <ItemPrice>36</ItemPrice>
  </Item>
  <Item>
    <ItemID>7</ItemID>
    <ItemPrice>49</ItemPrice>
  </Item>
  <Item>
    <ItemID>8</ItemID>
    <ItemPrice>64</ItemPrice>
  </Item>
  <Item>
    <ItemID>9</ItemID>
    <ItemPrice>81</ItemPrice>
  </Item>
  <Item>
    <ItemID>10</ItemID>
    <ItemPrice>100</ItemPrice>
  </Item>
</Items>
hwmweimin 2013-11-27
  • 打赏
  • 举报
回复
非常感谢 4楼 的回答,但这是方法是最后才会使用的方法,因为有100个节点是,4楼可以想想,你的代码会有多个啊,也好难维护。这个收藏吧,谢谢
hwmweimin 2013-11-27
  • 打赏
  • 举报
回复
非常感谢2楼的回答,但这是一单节点的,我的问题是双节点,或多节点,百度也百度过了,希望能有个例子,本人比较菜,谢谢
hwmweimin 2013-11-27
  • 打赏
  • 举报
回复
非常感谢1楼的回答,但这个例子,我无法转成VB.NET,版
capricciosoft 2013-11-27
  • 打赏
  • 举报
回复
.net的XML基本操作是: 1.new一个 System.Xml.XmlDocument对象。 2.执行XmlDocument对象的Load方法加载XML文档。 3.XmlDocument对象的DocumentElement对象可操作文档的根,比如你这个文档的<PurchaseOrder/>。 4.可通过DocumentElement的ChildNodes属性获得根节点的所有子节点(XmlNode),子节点的ChildNodes属性可以获得该节点的所有子节点。 5.节点(XmlNode)有多种类型。常用的有: 元素(Element),如<item/> 文本(Text),如<item>text<item/>中的text,通过InnerText属性获取这个文本。 通过节点的NodeType属性可以区分不同的节点。 6.节点(XmlNode)的Attributes属性可以访问节点的所有属性(XmlAttribute),例如<item a="5"/>的a,通过Value属性获取值。 7.通过XmlDocument对象的CreateElement方法去创建元素,通过节点(XmlNode)的AppendChild方法进行添加。 8.通过XmlDocument对象的save方法进行存储。
wind_cloud2011 2013-11-27
  • 打赏
  • 举报
回复

  Private Sub createXML()
        Try
            Dim writer As New Xml.XmlTextWriter(Application.StartupPath & "/test.xml" , System.Text.Encoding.GetEncoding("gb2312"))
             writer.Formatting = Xml.Formatting.Indented
            writer.WriteRaw("<?xml version=""1.0"" encoding=""gb2312"" ?>")
            '书写根元素   
            writer.WriteStartElement("PurchaseOrder")
            writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
            writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
            '添加次级元素   
            writer.WriteStartElement("Items")
            writer.WriteStartElement("Item")
            writer.WriteElementString("ItemID", "aaa111")
            writer.WriteElementString("ItemPrice", "34.22")
            writer.WriteEndElement()
            writer.WriteStartElement("Item")
            writer.WriteElementString("ItemID", "bbb222")
            writer.WriteElementString("ItemPrice", "2.89")
            writer.WriteEndElement()
            writer.WriteFullEndElement()
            writer.Close()
        Catch ex As Exception
            MsgBox(ex.Message & vbCrLf & ex.StackTrace)
        End Try

    End Sub
devmiao 2013-11-26
  • 打赏
  • 举报
回复
http://www.111cn.net/net/XML/39351.htm

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧