如何在我的表datos_usuario中编辑我的xml文件中的字段,其中num_id ="" 0801918813437"

时间:2017-09-24 21:34:07

标签: xml vb.net

您好我正在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 FILE

<?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;

2 个答案:

答案 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)