-1

这是我将新记录附加到现有 XML 文档的代码:

Sub addEXISTING(ByVal c_name As String, ByVal c_age As Integer, ByVal c_sex As String)
     Dim e_client = doc.CreateElement("CLIENT")

     Dim e_name As Xml.XmlElement = doc.CreateElement("NAME")

     Dim e_age As Xml.XmlElement = doc.CreateElement("AGE")

     Dim e_sex As Xml.XmlElement = doc.CreateElement("SEX")

     e_name.InnerText = c_name
     e_age.InnerText = c_age
     e_sex.InnerText = c_sex
     e_client.AppendChild(e_name)
     e_client.AppendChild(e_age)
     e_client.AppendChild(e_sex)
     childparent.AppendChild(e_client)

     doc.AppendChild(childparent)
     doc.Save("D:\mefolder\me.xml")
     MsgBox("XML DOCUMENT UPDATED!", MsgBoxStyle.Information, "Notice:")
End Sub

但是,当这段代码被执行时,新数据的文件条目会覆盖现有的文件条目。

基本上,我想要的输出是这样的,例如(在浏览器中查看 XML 文档时):

<BIO_INFO>
<CLIENT>   ----- EXISTING 
<NAME>John</NAME> 
<AGE>21</AGE>
<SEX>MALE</SEX>
</CLIENT>
<CLIENT>  ----- NEW ENTRY
<NAME>Elena</NAME>
<AGE>21</AGE>
<SEX>FEMALE</SEX>
</CLIENT>
</BIO_INFO>

但这就是我得到的:

<BIO_INFO>
<CLIENT>
<NAME>Elena</NAME>
<AGE>21</AGE>
<SEX>FEMALE</SEX>
</CLIENT>
</BIO_INFO>"

这是我的声明:

Dim filer As DirectoryInfo = New DirectoryInfo("D:\mefolder")
Dim doc As New XmlDocument
Dim root As XmlElement = doc.CreateElement("CLIENT")
Dim childparent As XmlElement = doc.CreateElement("BIO_INFO")
Dim child As XmlElement = doc.CreateElement("NAME")
Dim childage As XmlElement = doc.CreateElement("AGE")
Dim childsex As XmlElement = doc.CreateElement("SEX")
4

1 回答 1

0

无法将数据附加到 xml 文档。您需要加载整个文档并再次保存(来自 nianios 注释Appending an existing XML file)。必须使用XmlDocument.Load 方法

Sub addEXISTING(ByVal c_name As String, ByVal c_age As Integer, ByVal c_sex As String)

    XmlDocument.Load("D:\mefolder\me.xml")'!

   Dim e_client = doc.CreateElement("CLIENT")
   Dim e_name As Xml.XmlElement = doc.CreateElement("NAME")
   Dim e_age As Xml.XmlElement = doc.CreateElement("AGE")
   Dim e_sex As Xml.XmlElement = doc.CreateElement("SEX")

   e_name.InnerText = c_name
   e_age.InnerText = c_age
   e_sex.InnerText = c_sex
   e_client.AppendChild(e_name)
   e_client.AppendChild(e_age)
   e_client.AppendChild(e_sex)
   childparent.AppendChild(e_client)

   doc.AppendChild(childparent)
   doc.Save("D:\mefolder\me.xml")
  MsgBox("XML DOCUMENT UPDATED!", MsgBoxStyle.Information, "Notice:")
End Sub

请注意,打开和保存每条记录的效率不是很高,尤其是在文档很大的情况下。考虑取出.Save.Load取出您的方法并单独触发它们(就像您在文本编辑器中处理文本文件一样)。

于 2013-05-31T19:28:27.833 回答