xmlの既存のノードに新しいノードを追加する方法

vb.net
xmlの既存のノードに新しいノードを追加する方法

以下は私のxmlファイルのコードです。

__

  [email protected]

  [email protected]
  fffffsadasd
  ggggasdsd

__

私は送信されたボタンを持っています。このボタンをクリックするたびに、Enailノードとそれに対応するchildnodeを既存のxmlファイルに追加します。 送信ボタンクリックで私は次のコードを書いています。

Dim currNode As XmlNode
        Dim doc As New XmlDocument


        doc.LoadXml(("" + " " + ""))
        Dim docFrag As XmlDocumentFragment = doc.CreateDocumentFragment()
        docFrag.InnerXml = "" + " " + txtFrom.Text + " " + ""
        currNode = doc.DocumentElement.FirstChild
        currNode.InsertAfter(docFrag, currNode.LastChild)

        docFrag.InnerXml = "" + " " + txtTo.Text + " " + ""
        currNode = doc.DocumentElement.FirstChild
        currNode.InsertAfter(docFrag, currNode.LastChild)

        docFrag.InnerXml = "" + txtSubject.Text + ""
        currNode = doc.DocumentElement.FirstChild
        currNode.InsertAfter(docFrag, currNode.LastChild)

        docFrag.InnerXml = "" + txtBody.Text + ""
        currNode = doc.DocumentElement.FirstChild
        currNode.InsertAfter(docFrag, currNode.LastChild)

        doc.Save("C:\xmlmailfile.xml")

ボタンクリックでどのような変更を加える必要がありますか

  0  0


ベストアンサー

このような何かはそれをするべきです。 XMLTextWriterはあなたの目的にはより良いかもしれませんが:

文字列としてのプライベート関数GenerateXML(ByValメールの(リストとしての)Eメール)

新しいSystem.Text.StringBuilderとして薄暗いsb

swを新しいIO.StringWriter(sb)、xtを新しいXml.XmlTextWriter(sw)として使用

xt.WriteStartElement( "xmlDoc")

整数としてのi = = 0 emails.Countへ -  1

xt.WriteStartElement( "email")

xt.WriteStartElement( "From")xt.WriteElementString( "address"、emails(i).From)xt.WriteEndElement()

xt.WriteStartElement( "Receipent")xt.WriteElementString( "to"、Eメール(i)。受信者)xt.WriteEndElement()

xt.WriteElementString( "subject"、電子メール(i).Subject)xt.WriteElementString( "body"、電子メール(i).Body)

xt.WriteEndElement()

次

xt.WriteEndElement()

使用終了

sb.ToStringを返します。

終了機能

編集:

これにはエラー処理などが必要ですが、うまくいくはずです。 ファイルが存在しても空の場合など、壊れる可能性がある場合もありますが、それらを解決する必要があります。

モジュールconsoleTestApp

文字列としてのプライベート_パス= "c:\ output.xml"

//これらはテキストボックスのふりをします。文字列としての公開txtFrom文字列としての公開txtRecipient文字列としての公開txtSubject文字列としての公開txtBody

サブメイン()

txtFrom = "from1" txtRecipient = "rec1" txtSubject = "subj1" txtBody = "body1"

AddNewEmail()

txtFrom = "from2" txtRecipient = "rec2" txtSubject = "subj2" txtBody = "body2"

AddNewEmail()

終了サブ

プライベートSub AddNewEmail()

IO.File.Exists(_path)以外の場合

xtを新規として使用Xml.XmlTextWriter(_path、System.Text.Encoding.UTF8)

xt.WriteStartElement( "xmlDoc")xt.WriteEndElement()

使用終了

終了する場合

新しいxml.XmlDocument xD.Load(_path)としてxDを暗くする

薄暗いxNはXml.XmlNode = xD.CreateNode(Xml.XmlNodeType.Element、String.Empty、 "email"、String.Empty)xN.InnerXml = GenerateXML()

xD.SelectSingleNode( "// xmlDoc")。AppendChild(xN)xD.Save(_path)

終了サブ

文字列としてのプライベート関数GenerateXML()

新しいSystem.Text.StringBuilderとして薄暗いsb

swを新しいIO.StringWriter(sb)、xtを新しいXml.XmlTextWriter(sw)として使用

xt.WriteStartElement( "From")xt.WriteElementString( "address"、txtFrom)xt.WriteEndElement()

xt.WriteStartElement( "Receipent")xt.WriteElementString( "to"、txtRecipient)xt.WriteEndElement()

xt.WriteElementString( "subject"、txtSubject)xt.WriteElementString( "body"、txtBody)

使用終了

sb.ToStringを返します。

終了機能

エンドモジュール

2


タイトルとURLをコピーしました