将数据添加到现有的XML文件
问题描述:
这是我追加新记录,以我现有的XML文档代码:将数据添加到现有的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")
答
不可能将数据附加到xml文档。您需要加载整个文档并再次保存(从nianios注释Appending an existing XML file)。这是需要使用XmlDocument.Load Method
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
从您的方法中取出并单独触发它们(例如您正在文本编辑器中处理文本文件)。
你可以试试这个:http://stackoverflow.com/questions/13237514/appending-information-to-an-xml-file-in-vb-net?rq = 1 或http://stackoverflow.com /问题/ 2645440 /附加-AN-现有的XML文件?RQ = 1 – Nianios