954,514 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Visual Basic 2010 reading XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.stagevu"
       name="StageVU"
       version="1.3.6"
       provider-name="AJ">
  <requires>
    <import addon="xbmc.python" version="1.0"/>
  </requires>
  <extension point="xbmc.python.pluginsource"
            library="default.py">
        <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>stagevu: Watch video</summary>
    <description>Watch what you have been searching on internet.</description>
    <disclaimer>The video add-ons hosted by my XBMC add-ons repository(aj add-ons) makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties, including without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights. Further, video add-ons don't warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the Internet web site where from data is retrieved or otherwise relating to such materials or on any sites linked to this addon. Videos are streamed directly from video-hosting websites that are having full rights to remove such access to video if required.</disclaimer>
	<platform>all</platform>
  </extension>
</addon>


using streamreader or whatever, don't really care, but I need to be able to load

and later down
stagevu: Watch videoWatch what you have been searching on internet.

into say a label.text to use elsewhere.
So I end with something like
Dim xID as String = id
Dim xName as String = name
Dim xVersion as String = version
Dim xPName as String = provider-name
Dim xSum as String = summary
Dim xDesc as String = description

Label26.Text = xid & "," & xName & "," & xVersion & "," & xPName & "," & xSum & "," & xDesc

don't need any extra just those. Please help and use little words and code examples :)

TheQuestor
Newbie Poster
2 posts since Jan 2012
Reputation Points: 10
Solved Threads: 0
 

I've made a little progress
as I noticed, all the available references assume a underneath the <?XML> tab and of course the closing at the bottom, and the xml file I am reading do not have that, they go right ito the Public Sub ReadAddonXML(ByVal AddonName)
Try

If My.Computer.FileSystem.FileExists("Test.xml") Then '<-9
My.Computer.FileSystem.DeleteFile("Test.xml")
End If

Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("Test.xml", True)
Const forReading = 1

Dim objFSO, objFile, sData
objFSO = CreateObject("Scripting.FileSystemObject")
objFile = objFSO.openTextFile("addon.xml", forReading)
sData = ""
Do Until objFile.atEndOfStream
Dim Data As String = sData & objFile.readLine
Dim NewData As String = Replace(Data, "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>", "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & NL & "<addons>")
file.WriteLine(NewData)
Loop
file.WriteLine("</addons>")
objFile.close()
objFile = Nothing
objFSO = Nothing
file.Close()

Dim output As StringBuilder = New StringBuilder()

Dim XmlReader As New XmlTextReader("Test.xml")
Dim intID As String
Dim intProductCountTotal As Integer
Dim strPrice, strWeight, strDescription, strId As String
While XmlReader.Read()
If XmlReader.Name.ToString() = "addon" Then
If XmlReader.HasAttributes Then
While XmlReader.MoveToNextAttribute()
If XmlReader.Name = "addons" Then
intID = XmlReader.Value.ToString()
End If
End While
End If
End If
If XmlReader.Name.ToString() = "id" Then strId = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "name" Then strPrice = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "version" Then strWeight = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "description" Then strDescription = Trim(XmlReader.ReadString())

'When the end of each <Product> element is reached by the XmlReader, you can extract all the values you need and import them into a database or whatever
'These readers provide forward-only access to XML data, so I choose to extract the data from each of the elements, and then use the values
If XmlReader.Name.ToString() = "addons" And XmlReader.NodeType.ToString() = "EndElement" Then

output.AppendLine("Values at product ID " & strId & " is:")
output.AppendLine("- price: " & strPrice & "")
output.AppendLine("- weight: " & strWeight & "")
output.AppendLine("- description: " & strDescription & "")
intProductCountTotal += 1
RichTextBox6.Text = output.ToString()
End If



End While




XmlReader.Close()


'MsgBox(output.ToString())

Catch ex As Exception

End Try
End Sub

TheQuestor
Newbie Poster
2 posts since Jan 2012
Reputation Points: 10
Solved Threads: 0
 

Based on your xml you want to store only the information of ONE plugin in this xml file. If so then you can use this code:

Dim xdoc As XDocument = XDocument.Load("C:\Users\GeekByChoiCe\Desktop\plugin.xml")
		Dim sb As New StringBuilder

		'asuming you have more than 1 plugin in the xml file
		Dim el As XElement = xdoc.Element("addon")
		sb.AppendFormat("id: {0}{4} name: {1}{4} version: {2}{4} description: {3}{4}{4}", el.@id, el.@name, el.@version, el...<description>.Value, Environment.NewLine)

		Label1.Text = sb.ToString

else you have to modify your xml slightly like:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addons>
<addon id="plugin.video.stagevu"
       name="StageVU"
       version="1.3.6"
       provider-name="AJ">
  <requires>
    <import addon="xbmc.python" version="1.0"/>
  </requires>
  <extension point="xbmc.python.pluginsource"
            library="default.py">
        <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>stagevu: Watch video</summary>
    <description>Watch what you have been searching on internet.</description>
    <disclaimer>The video add-ons hosted by my XBMC add-ons repository(aj add-ons) makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties, including without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights. Further, video add-ons don't warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the Internet web site where from data is retrieved or otherwise relating to such materials or on any sites linked to this addon. Videos are streamed directly from video-hosting websites that are having full rights to remove such access to video if required.</disclaimer>
	<platform>all</platform>
  </extension>
</addon>
<addon id="plugin.video.dummy"
       name="Dummy"
       version="1.0.0"
       provider-name="GbC">
  <requires>
    <import addon="xbmc.python" version="1.0"/>
  </requires>
  <extension point="xbmc.python.pluginsource"
            library="default.py">
        <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <summary>dummy plugin</summary>
    <description>I am a dummy plugin.</description>
    <disclaimer>blabla</disclaimer>
	<platform>all</platform>
  </extension>
</addon>
</addons>

and using the following code:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
		Dim xdoc As XDocument = XDocument.Load("C:\Users\GeekByChoiCe\Desktop\plugin.xml")
		Dim sb As New StringBuilder

		'asuming you have more than 1 plugin in the xml file
		For Each el As XElement In xdoc.Root.Elements
			sb.AppendFormat("id: {0}{4} name: {1}{4} version: {2}{4} description: {3}{4}{4}", el.@id, el.@name, el.@version, el...<description>.Value, Environment.NewLine)
		Next

		Label1.Text = sb.ToString
	End Sub


Note: Make sure you have added a reference to System.Xml.Linq

GeekByChoiCe
Master Poster
721 posts since Jun 2009
Reputation Points: 208
Solved Threads: 168
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: