2012-04-14 11 views
0

私のプロジェクトでいくつか問題があります。 VB.netを使用しているWindows Mobile 5の基本的な財務マネージャです。しかし、すべてが正常に動作しますが、値がxmlに保存されると、別の値が保存されるときに上書きされます。これらの値を完全に上書きするのではなく、これらの値を追加する必要があります。上書きするのではなくXMLに値を追加する(XML + VB.NET)

マイコード:

Private Sub MenuItem3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click 
    Dim writer As New XmlTextWriter("product.xml", Nothing) 
    writer.WriteStartDocument(True) 
    writer.Formatting = Formatting.Indented 
    writer.Indentation = 2 
    writer.WriteStartElement("Table") 
    createNode(DateTimePicker.Text, Subject.Text, Category.Text, Amount.Text, PaymentLabel.Text, writer) 
    writer.WriteEndElement() 
    writer.WriteEndDocument() 
    writer.Close() 
End Sub 
Private Sub createNode(ByVal eDate As String, ByVal eSubject As String, ByVal eCategory As String, ByVal eAmount As String, ByVal ePayment As String, ByVal writer As XmlTextWriter) 
    writer.WriteStartElement("Expenses") 
    writer.WriteStartElement("Date") 
    writer.WriteString(eDate) 
    writer.WriteEndElement() 
    writer.WriteStartElement("Subject") 
    writer.WriteString(eSubject) 
    writer.WriteEndElement() 
    writer.WriteStartElement("Category") 
    writer.WriteString(eCategory) 
    writer.WriteEndElement() 
    writer.WriteStartElement("Amount") 
    writer.WriteString(eAmount) 
    writer.WriteEndElement() 
    writer.WriteStartElement("Payment") 
    writer.WriteString(ePayment) 
    writer.WriteEndDocument() 
End Sub 

答えて

0

あなたはXmlTextWriterXmlTextReaderと仕事をしなければならないと、最も重要なのは、XmlDocumentXmlElementおよびよります。

XmlDocumentと協力して、あなたはなど、あなたがXMLノードを削除挿入し、追加することを可能にする、Document Object Modelを使用して文書を操作することがあります

は、XMLを書く/この方法を読んでいくつかのポインタのためのthis linkを参照してください。 文書を操作する方法については、XmlDocumentSystem.Xmlの名前空間の公式文書を参照してください。

+0

ありがとうございました。これには別の方法がありますか?私はvb.netにはかなり新しく、これは私のクラスプロジェクトを完了するために行われます。 XMLはトピックから外れていますが、データがリストボックスにリストされているときに水平方向にスクロールする方法がないため、データをグリッド表示で表示したかったのです。 –

+0

おそらくXmlTextReaderを使って要素を読み込んで、XmlTextWriterを使ってすぐに書き出すことができます。そして、Table要素に行くときには、新しい要素を挿入します。しかし、私は本当にDOMを使用することをお勧めします。それは本当に難しいことではありません! :) – Torious

+0

私は参照してください。私はDOMを使用するのであればどこから始めるべきか分かりません。チュートリアルをオンラインで試してみましたが、うまくいきませんでしたおそらく、彼らはWindows用のvb.net用であるのに対して、私はWindows用の携帯用にしようとしています。これはおそらく私がまだ立ち往生している理由です。 –

0

いいですか、これはどうですか。

Private Sub MenuItem3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click 

    Dim doc as New XmlDocument() 
    doc.LoadXml("product.xml") 

    Dim root as XmlNode = doc.DocumentElement 
    Dim list as XmlNodeList = root.SelectNodes("Table") 
    Dim table as XmlNode = list.Item(0) 

    table.AppendChild(createNode(doc, ... , ...)) 

    Dim writer As New XmlTextWriter(Console.Out) 
    writer.Formatting = Formatting.Indented 
    doc.WriteTo(writer) 
    writer.Flush() 

End Sub 

Function createNode(XmlDocument doc, ByVal eDate As String, ByVal eSubject As String, ByVal eCategory As String, ByVal eAmount As String, ByVal ePayment As String, ByVal writer As XmlTextWriter) As XmlNode 

    Dim element as XmlElement = doc.CreateElement("Expenses") 

    Dim dateElement as XmlElement = doc.CreateElement("Date") 
    dateElement.InnerText = eDate 
    element.AppendChild(dateElement) 

    ... similar code for the other sub-elements ... 

    Return element 

End Function 
関連する問題