您好我正在vb.net中开发一个创建和操作xml文件的应用程序。名称为users的文件每个用户有一个datos_usarios表。
我想要做的是在vb.net中创建一个代码,允许我将内部文本中的字符Nombre(名称)更改为Gerardo到John,其中表Datos_usuario有一个字段为num_id" 0801198813437&#34 ;.
我想验证的原因是为了确保它修改正确的datos_usuario表,因为每个用户有一个数据usuario表,例如我可以有几个用户名为Gerardo,但num_id将是一个因此我想改变Nombre的唯一字段,其中num_id =" 08011918813437" 这是xml文件
<?xml version="1.0" encoding="utf-8"?>
<Users>
<Datos_Usuario>
<Nombre>Gerardo</Nombre>
<Apellido>Godoy</Apellido>
<Telefono>99404469</Telefono>
<correo>gjafet2005@gmail.com</correo>
<direccion>Res. La Hacienda</direccion>
<user>jerry</user>
<contraseña>godoy</contraseña>
<num_id>0801198813437</num_id>
</Datos_Usuario>
<Datos_Usuario>
<Nombre>Fanny</Nombre>
<Apellido>Saission</Apellido>
<Telefono>99404469</Telefono>
<correo>gjafet2005@gmail.com</correo>
<direccion>Res. La Hacienda</direccion>
<user>fany</user>
<contraseña>sai</contraseña>
<num_id>0801198813007</num_id>
</Datos_Usuario>
<Datos_Usuario>
<Nombre>jonathan</Nombre>
<Apellido>godoy</Apellido>
<Telefono>33396485</Telefono>
<correo>jonathan_jared@hotmail.com</correo>
<direccion>res. la haccienda</direccion>
<user>jon11</user>
<contraseña>jaimico2009</contraseña>
<num_id>0801199804519</num_id>
</Datos_Usuario>
<Datos_Usuario>
<Nombre>ROCIO</Nombre>
<Apellido>GODOY</Apellido>
<Telefono>31720388</Telefono>
<correo>rociogodoy92@gmail.com</correo>
<direccion>la hacienda</direccion>
<user>ROCIO</user>
<contraseña>ABELARD</contraseña>
<num_id>0801199205694</num_id>
</Datos_Usuario>
</Users>
想要在Nombre中将Gerardo替换为John,其中num_id =&#34; 0801198813437&#34;
答案 0 :(得分:1)
您可以尝试System.Xml.Linq
命名空间:
Dim x = XDocument.Load("C:\users.xml")
For Each user In x.<Users>.<Datos_usuario>
If user.<num_id>.Value = "0801198813437" Then
user.<Nombre>.Value = "John"
End If
Next
x.Save("C:\users.xml")
有关详细信息,请查看XML Child Axis Property (Visual Basic)
答案 1 :(得分:0)
我找到了实现它的另一种方法。我继续在一个带有数据集的代码中工作,实际上做了我正在寻找的东西留下我的代码,以防其他人需要它我放了一些错误提供程序,以避免用户用空数据更改字段&#34;&#34 ;
Dim namefile
namefile = "C:\Users\GERARDO\Documents\prueba app\users.xml"
Dim loadxml As XmlDocument
loadxml = New XmlDocument()
Dim DTB = New DataTable
DTB = loadxml
'Dim xmlDoc As XmlDocument
Dim xmlDoc As XmlDocument = New XmlDocument
Dim ts As DataSet
Dim reader As StringReader
xmlDoc = New XmlDocument()
xmlDoc.Load(namefile)
Dim see As String
Dim see2 As String
ts = New DataSet()
'reader = New StringReader(xmlDoc.InnerXml)
reader = New StringReader(xmlDoc.InnerXml)
'reader = New XmlElement
ts.ReadXml(reader)
For Each t As DataTable In ts.Tables
Console.WriteLine(String.Format("{0}: {1}", t.TableName, t.Rows.Count))
For Each r As DataRow In t.Rows
see = r.Item(0)
see2 = r.Item(7)
If My.Forms.MantUsuario.Txtnum_id.Text = see2 Then
Dim denyentance As Integer
If My.Forms.MantUsuario.TxtName.Text = "" Then
My.Forms.MantUsuario.ErrorProvider1.SetError(My.Forms.MantUsuario.TxtName, "Favor llenar el nombre")
denyentance = 1
End If
If My.Forms.MantUsuario.Txtapellido.Text = "" Then
My.Forms.MantUsuario.ErrorProvider1.SetError(My.Forms.MantUsuario.Txtapellido, "Llenar el Apellido")
denyentance = 1
End If
If My.Forms.MantUsuario.Txtcorreo.Text = "" Then
My.Forms.MantUsuario.ErrorProvider1.SetError(My.Forms.MantUsuario.Txtcorreo, "Llenar el Correo")
denyentance = 1
End If
If My.Forms.MantUsuario.Txtdir.Text = "" Then
denyentance = 1
End If
If My.Forms.MantUsuario.Txtphone.Text = "" Then
denyentance = 1
End If
If denyentance = 1 Then
MsgBox("Debe llenar todos los campos", MsgBoxStyle.Critical)
Else
MsgBox("Se ha Guardado Exitosamente", MsgBoxStyle.Critical)
r.Item(0) = My.Forms.MantUsuario.TxtName.Text
r.Item(1) = My.Forms.MantUsuario.Txtapellido.Text
r.Item(2) = My.Forms.MantUsuario.Txtphone.Text
r.Item(3) = My.Forms.MantUsuario.Txtcorreo.Text
r.Item(4) = My.Forms.MantUsuario.Txtdir.Text
ts.AcceptChanges()
ts.BeginInit()
End If
End If
Next
Next
ts.EndInit()
ts.WriteXml(namefile)