Private Sub XMLInformation(ByVal mt As Boolean, ByVal isbn As StringBuilder, ByVal rating As String, ByVal age As String, ByVal anno As String, ByVal reviewer As String, ByVal page As String, ByVal title As String)
'Determine if the xml file exists
If File.Exists("guide.xml") Then
Dim xdoc As New Xml.XmlDocument
xdoc.Load("guide.xml")
Dim xnlist As Xml.XmlNodeList = xdoc.SelectNodes("//review[@mt='1']")
If xnlist.Count > 0 Then
If mt Then
Dim bFound As Boolean = False
For Each xnode As Xml.XmlNode In xnlist
Application.DoEvents()
Dim xelement As Xml.XmlElement = DirectCast(xnode, Xml.XmlElement)
If xelement.GetElementsByTagName("anno")(0).InnerText.ToLower.Equals(anno.ToLower.Trim) Then
bFound = True
For Each s As String In isbn.ToString.Split(";"c)
Application.DoEvents()
If s.Length <> 0 Then
Dim xIsbn As Xml.XmlElement = xdoc.CreateElement("isbn")
xelement.SelectSingleNode("./isbns").AppendChild(xIsbn)
xIsbn.SetAttribute("number", s.Trim)
End If
Next
'Setup a new titles node
Dim xTitle As Xml.XmlElement = xdoc.CreateElement("title")
xelement.SelectSingleNode("./titles").AppendChild(xTitle)
xTitle.SetAttribute("value", title.Trim)
xTitle.SetAttribute("page_count", page.Trim)
Exit For
End If
Next
If Not bFound Then
CreateNewReviewNode(xdoc, mt, isbn, rating, age, anno, reviewer, page, title)
End If
Else
CreateNewReviewNode(xdoc, mt, isbn, rating, age, anno, reviewer, page, title)
End If
Else
CreateNewReviewNode(xdoc, mt, isbn, rating, age, anno, reviewer, page, title)
End If
xdoc.Save("guide.xml")
Else
Dim xwtr As New Xml.XmlTextWriter("guide.xml", Encoding.UTF8)
xwtr.Formatting = Xml.Formatting.Indented
xwtr.Indentation = 4
xwtr.QuoteChar = """"c
xwtr.WriteStartDocument()
xwtr.WriteStartElement("guide")
xwtr.WriteEndElement()
xwtr.WriteEndDocument()
xwtr.Close()
XMLInformation(mt, isbn, rating, age, anno, reviewer, page, title)
End If
End Sub
Private Sub CreateNewReviewNode(ByVal xdoc As Xml.XmlDocument, ByVal mt As Boolean, ByVal isbn As StringBuilder, ByVal rating As String, ByVal age As String, ByVal anno As String, ByVal reviewer As String, ByVal page As String, ByVal title As String)
'Setup a new review element node
Dim xReview As Xml.XmlElement = xdoc.CreateElement("review")
xdoc.DocumentElement.AppendChild(xReview)
'Add the attributes
xReview.SetAttribute("mt", Convert.ToByte(mt).ToString.Trim)
xReview.SetAttribute("rating", rating.Trim)
xReview.SetAttribute("age", age)
xReview.SetAttribute("reviewer", reviewer.Trim)
'Setup a new isbns node
Dim xIsbns As Xml.XmlElement = xdoc.CreateElement("isbns")
For Each s As String In isbn.ToString.Split(";"c)
Application.DoEvents()
If s.Length <> 0 Then
Dim xIsbn As Xml.XmlElement = xdoc.CreateElement("isbn")
xIsbns.AppendChild(xIsbn)
xIsbn.SetAttribute("number", s.Trim)
End If
Next
xReview.AppendChild(xIsbns)
'Setup a new titles node
Dim xTitles As Xml.XmlElement = xdoc.CreateElement("titles")
Dim xTitle As Xml.XmlElement = xdoc.CreateElement("title")
xTitles.AppendChild(xTitle)
xTitle.SetAttribute("value", title.Trim)
xTitle.SetAttribute("page_count", page.Trim)
xReview.AppendChild(xTitles)
'Setup a new anno node
Dim xAnno As Xml.XmlElement = xdoc.CreateElement("anno")
'Setup a xml text object
Dim xAnnoText As Xml.XmlText = xdoc.CreateTextNode(anno.Trim)
xAnno.AppendChild(xAnnoText)
xReview.AppendChild(xAnno)
End Sub