私は XML の初心者なので、XML 構造について助けが必要です。後で VB.NET で読むために構造を設計するのは間違っている可能性があります。
(これは私がこれについて行う 4 番目の質問のようなものです...しかし、重複していません。それについて包括的に説明してください。私はこれを真剣に受け止めて、自分のメリットでこれを行います。同じことを書くのに飽きています。このトピック。)
アプリケーションで音楽のコレクションを管理できるようにしたいのですが、現在、次のようなタイトルのテキスト ファイル (239 ファイル) がたくさんあります。
90's Dance
2006 Electro
2007 Hardstyle
2013 Pop (English)
2013 Rock (English)
2013 UK Hardcore
ご覧のとおり、Year Musicstyle.txt
さて、各ファイルには次のようなデータが含まれています。
Ab - Stay With Me;320;05:53;13,54
Above & Beyond Feat. Richard Bedford - Sun & Moon (Reaktor Hardcore Remix);320;06:03;13,87
Adrenalin - No Need To Run;320;06:07;14,04
Afrojack & Steve Aoki Feat. Miss Palmer - No Beef (Nobody Bootleg);320;05:45;13,19
Andy Wilson - Forever Loved;192;05:45;7,89
ご覧のとおり、Filename;Bitrate;Duration;SizeInMegabytes
SO の多くの人は、SQL または XML でデータベースを作成するのが最善であると私に言いました。これは、SQL の学習を開始するのが少し難しいように思われるため、私が試していることです。私は XML や SQL について何も知りません。
XML ファイルに必要な構造がわかります。xml ファイルは と で区切る必要がありYear
、MusicStyle
そこに曲の情報を配置します。
VB.NET で xml ファイルを作成するためのチュートリアルを読みましたが、最終的な構造は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<!--XML Songs Database.-->
<Songs>
<_2013>
<Rock>
<FileName>My Song 1.mp3</FileName>
<Bitrate>320</Bitrate>
<Duration>04:55</Duration>
<Filesize>4,80</Filesize>
<FileName>My Song 2.mp3</FileName>
<Bitrate>192</Bitrate>
<Duration>06:44</Duration>
<Filesize>8,43</Filesize>
<FileName>My Song 3.mp3</FileName>
<Bitrate>128</Bitrate>
<Duration>05:12</Duration>
<Filesize>4,20</Filesize>
<FileName>My Song 4.mp3</FileName>
<Bitrate>256</Bitrate>
<Duration>07:32</Duration>
<Filesize>9,51</Filesize>
</Rock>
</_2013>
</Songs>
しかし、その構造は正しくないと思います。わかりませんが、次のような構造を読みやすくすることはできませんか?:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Songs Database.-->
<Songs>
<_2013>
<Rock>
<FileName>My Song 1.mp3</FileName><Bitrate>320</Bitrate><Duration>04:55</Duration><Filesize>4,80</Filesize>
<FileName>My Song 2.mp3</FileName><Bitrate>192</Bitrate><Duration>06:44</Duration><Filesize>8,43</Filesize>
<FileName>My Song 3.mp3</FileName><Bitrate>128</Bitrate><Duration>05:12</Duration><Filesize>4,20</Filesize>
<FileName>My Song 4.mp3</FileName><Bitrate>256</Bitrate><Duration>07:32</Duration><Filesize>9,51</Filesize>
</Rock>
</_2013>
</Songs>
問題は次のとおりです。
データベースの要求に最適な構造設計はどれかわかりません。
私はそれを設計する方法を正確に知らないので、コードと設計を修正するために助けが必要です.
私はそれを試しましたが、2番目の種類の構造を書くことができません(読みやすいと私が言ったもの)
これは、最初の構造体の種類を記述するために使用しているコードです。
Imports System
Imports System.Xml
Public Class Form1
' lets create the MyXML.xml document,
Dim xmlfile As String = "c:\MyXML.xml"
' declare our xmlwriter object
Dim Xml As XmlWriter = XmlWriter.Create(xmlfile, _
New XmlWriterSettings() With {.Indent = True})
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
' Write the Xml declaration.
Write_Start(Xml)
' Write a comment.
Write_Comment(Xml, "XML Songs Database.")
' Write the root element.
Write_Element(Xml, "Songs")
' Start our first year element.
Write_Element(Xml, "_2013")
' Start our first music style.
Xml.WriteStartElement("Rock")
' The music style song nodes:
Write_SongInfo_Node(Xml, "My Song 1.mp3", "320", "04:55", "4,80")
Write_SongInfo_Node(Xml, "My Song 2.mp3", "192", "06:44", "8,43")
Write_SongInfo_Node(Xml, "My Song 3.mp3", "128", "05:12", "4,20")
Write_SongInfo_Node(Xml, "My Song 4.mp3", "256", "07:32", "9,51")
' Write the xml end
Write_End(Xml)
' Start the file and exit
Process.Start(xmlfile) : Application.Exit()
End Sub
Private Sub Write_Start(ByVal xml As XmlWriter)
Xml.WriteStartDocument()
End Sub
Private Sub Write_Comment(ByVal xml As XmlWriter, ByVal Comment As String)
xml.WriteComment(Comment)
End Sub
Private Sub Write_Element(ByVal xml As XmlWriter, ByVal element As String)
xml.WriteStartElement(element)
End Sub
Private Sub Write_SongInfo_Node(ByVal xml As XmlWriter,
ByVal Filename As String, _
ByVal Bitrate As String, _
ByVal Duration As String, _
ByVal Filesize As String)
xml.WriteStartElement("FileName")
xml.WriteString(Filename)
xml.WriteEndElement()
xml.WriteStartElement("Bitrate")
xml.WriteString(Bitrate)
xml.WriteEndElement()
xml.WriteStartElement("Duration")
xml.WriteString(Duration)
xml.WriteEndElement()
xml.WriteStartElement("Filesize")
xml.WriteString(Filesize)
xml.WriteEndElement()
End Sub
Private Sub Write_End(ByVal xml As XmlWriter)
xml.WriteEndDocument()
xml.Close()
End Sub
End Class
アップデート:
私はこのインデントのフォーマットを取得しています:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Songs Database.-->
<Songs>
<Song>
<FileName>My Song 1.mp3</FileName>
<Year>2007</Year>
<Genre>Dance</Genre>
<Bitrate>320</Bitrate>
<Duration>04:55</Duration>
<Filesize>4,80</Filesize>
</Song>
<Song>
<FileName>My Song 2.mp3</FileName>
<Year>2009</Year>
<Genre>Electro</Genre>
<Bitrate>192</Bitrate>
<Duration>06:44</Duration>
<Filesize>8,43</Filesize>
</Song>
<Song>
<FileName>My Song 3.mp3</FileName>
<Year>2008</Year>
<Genre>UK Hardcore</Genre>
<Bitrate>128</Bitrate>
<Duration>05:12</Duration>
<Filesize>4,20</Filesize>
</Song>
<Song>
<FileName>My Song 4.mp3</FileName>
<Year>2013</Year>
<Genre>Techno</Genre>
<Bitrate>256</Bitrate>
<Duration>07:32</Duration>
<Filesize>9,51</Filesize>
</Song>
</Songs>
しかし、このフォーマットで「スペース」文字の量を節約し、ファイルサイズを節約したい:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Songs Database.-->
<Songs>
<Song><FileName>My Song 1.mp3</FileName><Year>2007</Year><Genre>Dance</Genre><Bitrate>320</Bitrate><Duration>04:55</Duration><Filesize>4,80</Filesize></Song>
<Song><FileName>My Song 2.mp3</FileName><Year>2009</Year><Genre>Electro</Genre><Bitrate>192</Bitrate><Duration>06:44</Duration><Filesize>8,43</Filesize></Song>
<Song><FileName>My Song 3.mp3</FileName><Year>2008</Year><Genre>UK Hardcore</Genre><Bitrate>128</Bitrate><Duration>05:12</Duration><Filesize>4,20</Filesize></Song>
<Song><FileName>My Song 4.mp3</FileName><Year>2013</Year><Genre>Techno</Genre><Bitrate>256</Bitrate><Duration>07:32</Duration><Filesize>9,51</Filesize></Song>
</Songs>
これは私がしようとしているものです:
Private Sub Write_SongInfo_Node(ByVal xml As XmlWriter,
ByVal Filename As String, _
ByVal Year As String, _
ByVal Genre As String, _
ByVal Bitrate As String, _
ByVal Duration As String, _
ByVal Filesize As String)
xml.WriteStartElement("Song")
' xml.Settings.Indent = False
xml.WriteStartElement("FileName")
xml.WriteString(Filename)
xml.WriteEndElement()
xml.WriteStartElement("Year")
xml.WriteString(Year)
xml.WriteEndElement()
xml.WriteStartElement("Genre")
xml.WriteString(Genre)
xml.WriteEndElement()
xml.WriteStartElement("Bitrate")
xml.WriteString(Bitrate)
xml.WriteEndElement()
xml.WriteStartElement("Duration")
xml.WriteString(Duration)
xml.WriteEndElement()
xml.WriteStartElement("Filesize")
xml.WriteString(Filesize)
xml.WriteEndElement()
' xml.Settings.Indent = True
xml.WriteEndElement()
End Sub