車の情報まとめアプリ08(車両情報の登録_Webからxmlファイルへの追加)
■Xmlで情報を登録する。
前回までで情報の表示について見てきた。今回登録の方法について見てみる。
車両情報はxmlファイルで保存しているため、Chromeなどのブラウザから情報を入力して、xml形式に変換した上でファイルに保存する流れ。
xmlファイルの構造は、下のように、<VehicleInfoList>がxmlファイルの中で1つだけのルートで、その子ノードとして<Vehicle></Vehicle>の構造の繰り返しとなる。これをブラウザから入力する(一部自動で入力)。
<VehicleInfoList>
<Vehicle>
<ID>001-202212</ID> → 自動入力(連番+年月YYYYMM)
<Brand>TOYOTA</Brand> → ドロップダウンリストで選択
<VehicleName>ピクシス エポック</VehicleName> → テキストボックス
<VehicleCategory>kei-car</VehicleCategory> → ドロップダウンリストで選択
<MinPrice>860200</MinPrice> → テキストボックス
<VehicleType>5BA-LA350A-GBRF</VehicleType> → テキストボックス
<VehicleSpec>
<Length>3395</Length> → テキストボックス
<Width>1475</Width> → テキストボックス
<PersonCapacity>4</PersonCapacity> → テキストボックス
<EngineCapacity>0.658</EngineCapacity> → テキストボックス
<MaxPowerOutputkW>36</MaxPowerOutputkW> → テキストボックス
<MaxTorqueNm>57</MaxTorqueNm> → テキストボックス
<FuelCapacity>28</FuelCapacity> → テキストボックス
<FuelConsumptionJC08>35.2</FuelConsumptionJC08> → テキストボックス
<Speciality>大人の毎日に、安心スモール</Speciality> → テキストボックス
</VehicleSpec>
</Vehicle>
<Vehicle>
… (以下繰り返し)
作った後の入力画面が下のもの。一番下のボタンで入力のコード(さらに下のButton1_Clickの部分)を実行。
ブラウザでの入力後に、ドロップダウンリストやテキストボックスの入力内容を文字列(String)にまとめて、これをXElementオブジェクトにし既存のデータに追加する。
下のコードのように、xmlファイルの要素の部分を直接の書き込んで、XElementのParseで文字列からXElementへ変換。その後に、Addでデータに追加しSaveでファイルとして保存。
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim folderpath = Server.MapPath(".\")
Dim xdoc = XElement.Load(folderpath + "\App_Data\VehicleInfoList.xml")
Dim lastVehicleNode As XElement = xdoc.LastNode
Dim ID_lastNode = lastVehicleNode.Descendants("ID")
Dim IDnumber = Val(Left(ID_lastNode.Value, 3)) + 1
Dim ID = Format(IDnumber, "000") + "-" + Format(Date.Now(), "yyyyMM")
Dim Brand = DropDownList1.Text
Dim VehicleName = TextBox1.Text
Dim VehicleCategory = DropDownList2.Text
Dim MinPrice = TextBox2.Text
Dim VehicleType = TextBox3.Text
Dim Length = TextBox4.Text
Dim Width = TextBox5.Text
Dim PersonCapacity = TextBox6.Text
Dim EngineCapacity = TextBox7.Text
Dim MaxPowerOutputkW = TextBox8.Text
Dim MaxTorqueNm = TextBox9.Text
Dim FuelCapacity = TextBox10.Text
Dim FuelConsumptionJC08 = TextBox11.Text
Dim Speciality = TextBox12.Text
Dim vehicleInfoStr = "<Vehicle>" + "<ID>" + ID + "</ID>" +
"<Brand>" + Brand + "</Brand>" +
"<VehicleName>" + VehicleName + "</VehicleName>" +
"<VehicleCategory>" + VehicleCategory + "</VehicleCategory>" +
"<MinPrice>" + MinPrice + "</MinPrice>" +
"<VehicleType>" + VehicleType + "</VehicleType>" + "<VehicleSpec>" +
"<Length>" + Length + "</Length>" +
"<Width>" + Width + "</Width>" +
"<PersonCapacity>" + PersonCapacity + "</PersonCapacity>" +
"<EngineCapacity>" + EngineCapacity + "</EngineCapacity>" +
"<MaxPowerOutputkW>" + MaxPowerOutputkW + "</MaxPowerOutputkW>" +
"<MaxTorqueNm>" + MaxTorqueNm + "</MaxTorqueNm>" +
"<FuelCapacity>" + FuelCapacity + "</FuelCapacity>" +
"<FuelConsumptionJC08>" + FuelConsumptionJC08 + "</FuelConsumptionJC08>" +
"<Speciality>" + Speciality + "</Speciality>" +
"</VehicleSpec>" + "</Vehicle>"
Dim vehicleInfoXml As XElement
vehicleInfoXml = XElement.Parse(vehicleInfoStr)
xdoc.Add(vehicleInfoXml)
Try
xdoc.Save(folderpath + "\App_Data\VehicleInfoList.xml")
MsgBox("Complete" & vbCrLf & vbCrLf & vehicleInfoStr)
Catch ex As Exception
MsgBox("Error")
End Try
End Sub
実際にRegisterボタンを押すと、連番としているID部分が1つずつ増えていき、xmlファイルを見ると情報が追加されているよう。
Xmlの操作には、XElement, XDocument, XmlElementなどいろいろなオブジェクトがあるので、別に定番みたいな書き込み方があるかもしれないけど、動いたので良しにする。