VB.Net/XML/DOM

Материал из VB Эксперт
Перейти к: навигация, поиск

Create new node from selected node

<source lang="vbnet"> Public Class Example7

   Shared Sub Main
       Dim doc As System.Xml.XmlDocument
       Dim editor As System.Xml.XPath.XPathNavigator
       Dim writer As System.Xml.XmlWriter
       doc = New System.Xml.XmlDocument()
       doc.Load("pubs.xml")
       editor = doc.CreateNavigator.SelectSingleNode("/pubs")
       writer = editor.AppendChild()
       writer.WriteStartElement("publishers")
       writer.WriteAttributeString("pub_id", "1234")
       writer.WriteAttributeString("pub_name", "new name")
       writer.WriteEndElement()
       writer.Close()
       doc.Save("output.xml")
   End Sub

End Class


 </source>


Get Elements By Tag Name and Loop through Nodes

<source lang="vbnet"> Imports System.Xml Imports System.Xml.Serialization Imports System.IO Public Class MainClass

  Public Shared Sub Main()
       Dim rawData As String = _
           "<Products>" & _
           "  <Product>" & _
           "    <name>Name 1</name>" & _
           "    <Id>101</Id>" & _
           "    <quantity>10</quantity>" & _
           "  </Product>" & _
           "  <Product>" & _
           "    <name>Name 2</name>" & _
           "    <Id>102</Id>" & _
           "    <quantity>10</quantity>" & _
           "  </Product>" & _
           "</Products>"
       Dim xmlDoc As New XmlDocument
       Dim productNodes As XmlNodeList
       Dim productNode As XmlNode
       Dim baseDataNodes As XmlNodeList
       Dim bFirstInRow As Boolean
       xmlDoc.LoadXml(rawData)
       productNodes = xmlDoc.GetElementsByTagName("Product")
       For Each productNode In productNodes
           baseDataNodes = productNode.ChildNodes
           bFirstInRow = True
           For Each baseDataNode As XmlNode In baseDataNodes
               If (bFirstInRow) Then
                   bFirstInRow = False
               Else
                   Console.Write(", ")
               End If
               Console.Write(baseDataNode.Name & ": " & baseDataNode.InnerText)
           Next
       Next
  End Sub

End Class


 </source>


Read Xml with XmlDocument and XmlNodeReader

<source lang="vbnet">

Imports System.IO Imports System.Xml Public Class Form1

   Public Shared Sub Main()
       Dim doc As New XmlDocument()
       doc.Load("c:\test.xml")
       Dim r As XmlNodeReader = New XmlNodeReader(doc)
       Dim ElementNumber As Integer
       Do
           ElementNumber += 1
           System.Console.WriteLine(ElementNumber.ToString & ". " & r.NodeType.ToString)
           If Not r.Name = "" Then System.Console.WriteLine("  Name: " & r.Name)
           If Not r.Value = "" Then System.Console.WriteLine("  Value: " & r.Value)
           If r.HasAttributes Then
               Dim i As Integer
               For i = 0 To r.AttributeCount - 1
                   r.MoveToAttribute(i)
                   System.Console.WriteLine("Attribute #" & (i + 1).ToString)
                   System.Console.WriteLine("Name: " & r.Name)
                   System.Console.WriteLine("Value: " & r.Value)
               Next i
               r.MoveToElement()
           End If
       Loop While r.Read() = True
   End Sub

End Class


 </source>