Compartir a través de


Cómo: Modificar literales XML (Visual Basic)

Actualización: noviembre 2007

Visual Basic proporciona las formas adecuadas para modificar literales XML. Puede agregar o eliminar elementos y atributos, así como reemplazar un elemento existente por un nuevo elemento XML. En este tema se proporcionan varios ejemplos sobre cómo modificar un literal XML existente.

Para modificar el valor de un literal XML

  • Para modificar el valor de un literal XML, obtenga una referencia al literal XML y establezca el valor de la propiedad Value en el valor deseado.

    El ejemplo de código siguiente actualiza el valor de todos los elementos <Price> de un documento XML.

    For Each book In From element In catalog.<Catalog>.<Book>
      book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00")
    Next
    

    A continuación, se muestra un XML de origen y un XML modificado de ejemplo a partir de este código de ejemplo.

    Source XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    
    Modified XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>47.20</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>48.25</Price>
      </Book>
    </Catalog>
    
    Nota:

    La propiedad Value hace referencia al primer elemento XML de una colección. Si se establece el valor de la propiedad Value, se aplica sólo al primer elemento de una colección cuando hay más de un elemento con el mismo nombre en la colección.

Para agregar un atributo a un literal XML

  • Para agregar un atributo a un literal XML, primero obtenga una referencia al literal XML. Después puede agregar un atributo agregando una nueva propiedad de eje de atributo XML. También puede agregar un nuevo objeto XAttribute al literal XML mediante el método Add. El ejemplo siguiente muestra ambas opciones.

    Dim newAttribute = "editorEmail"
    Dim editorID = "someone@example.com"
    For Each book In From element In catalog.<Catalog>.<Book>
      ' Add an attribute by using an XML attribute axis property.
      book.@genre = "Computer"
    
      ' Add an attribute to the Attributes collection.
      book.Add(New XAttribute(newAttribute, editorID))
    Next
    

    A continuación, se muestra un XML de origen y un XML modificado de ejemplo a partir de este código de ejemplo.

    Source XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    
    Modified XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" genre="Computer" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331" genre="Computer" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    

    Para obtener más información sobre las propiedades de eje de atributo XML, vea Propiedad Axis para atributo XML.

Para agregar un elemento a un literal XML

  • Para agregar un elemento a un literal XML, primero obtenga una referencia al literal XML. Después puede agregar un nuevo objeto XElement como el último subelemento del elemento mediante el método Add. Puede agregar un nuevo objeto XElement como el primer subelemento mediante el método AddFirst.

    Para agregar un nuevo elemento en una ubicación concreta relativa a otros subelementos, primero obtenga una referencia a un subelemento adyacente. Después puede agregar el nuevo objeto XElement delante del subelemento adyacente mediante el método AddBeforeSelf. Asimismo puede agregar el nuevo objeto XElement a continuación del subelemento adyacente mediante el método AddAfterSelf.

    El ejemplo siguiente muestra ejemplos de cada una de estas técnicas.

    Dim vbBook = From book In catalog.<Catalog>.<Book> _
                 Where book.<Title>.Value = _
                   "Developing Applications with Visual Basic .NET"
    
    vbBook(0).AddFirst(<Publisher>Microsoft Press</Publisher>)
    
    vbBook(0).Add(<PublishDate>2005-2-14</PublishDate>)
    
    vbBook(0).AddAfterSelf(<Book id="bk999"></Book>)
    
    vbBook(0).AddBeforeSelf(<Book id="bk000"></Book>)
    

    A continuación se muestra un XML de origen y un XML modificado de ejemplo a partir de este código de ejemplo.

    Source XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    
    Modified XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331">
        <Publisher>Microsoft Press</Publisher>
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
        <PublishDate>2005-2-14</PublishDate>
      </Book>
      <Book id="bk999"></Book>
    </Catalog>
    

Quitar un elemento o atributo de un literal XML

  • Para quitar un elemento o un atributo de un literal XML, obtenga una referencia al elemento o atributo y llame al método Remove, como se muestra en el ejemplo siguiente.

    For Each book In From element In catalog.<Catalog>.<Book>
      book.Attributes("genre").Remove()
    Next
    
    For Each book In From element In catalog.<Catalog>.<Book> _
                     Where element.@id = "bk999"
      book.Remove()
    Next
    

    A continuación se muestra un XML de origen y un XML modificado de ejemplo a partir de este código de ejemplo.

    Source XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" genre="Computer" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331" genre="Computer" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
      <Book id="bk999"></Book>
    </Catalog>
    
    Modified XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book></Catalog>
    

    Para quitar todos los elementos o atributos de un literal XML, obtenga una referencia al literal XML y llame al método RemoveAll.

Para modificar un literal XML

  • Para cambiar el nombre de un elemento XML, primero obtenga una referencia al elemento. Después puede crear un nuevo objeto XElement que tenga un nuevo nombre y pase el nuevo objeto XElement al método ReplaceWith del objeto XElement existente.

    Si el elemento que reemplaza tiene subelementos que se deben conservar, establezca el valor del nuevo objeto XElement en la propiedad Nodes del elemento existente. De esta forma, se establecerá el valor del nuevo elemento en el XML interno del elemento existente. De lo contrario, puede establecer el valor del nuevo elemento en la propiedad Value del elemento existente.

    El ejemplo de código siguiente reemplaza todos los elementos <Description> por un elemento <Abstract>. El contenido del elemento <Description> se conserva en el nuevo elemento <Abstract> mediante el uso de la propiedad Nodes del objeto XElement <Description>.

    For Each desc In From element In catalog.<Catalog>.<Book>.<Description>
      ' Replace and preserve inner XML.
      desc.ReplaceWith(<Abstract><%= desc.Nodes %></Abstract>)
    Next
    
    For Each price In From element In catalog.<Catalog>.<Book>.<Price>
      ' Replace with text value.
      price.ReplaceWith(<MSRP><%= price.Value %></MSRP>)
    Next
    

    A continuación se muestra un XML de origen y un XML modificado de ejemplo a partir de este código de ejemplo.

    Source XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
        <Description>
          An in-depth look at creating applications
          with <technology>XML</technology>. For 
          <audience>beginners</audience> or 
          <audience>advanced</audience> developers.
        </Description>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
        <Description>
          Get the expert insights, practical code samples, and best
          practices you need to advance your expertise with 
          <technology>Visual Basic .NET</technology>. 
          Learn how to create faster, more reliable applications
          based on professional, pragmatic guidance by today's top
          <audience>developers</audience>.
        </Description>
      </Book>
    </Catalog>
    
    Modified XML:
    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <MSRP>44.95</MSRP>    <Abstract>
          An in-depth look at creating applications
          with <technology>XML</technology>. For 
          <audience>beginners</audience> or 
          <audience>advanced</audience> developers.
        </Abstract>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <MSRP>45.95</MSRP>    <Abstract>
          Get the expert insights, practical code samples, and best
          practices you need to advance your expertise with 
          <technology>Visual Basic .NET</technology>. 
          Learn how to create faster, more reliable applications
          based on professional, pragmatic guidance by today's top
          <audience>developers</audience>.
        </Abstract>
      </Book>
    </Catalog>
    

Vea también

Tareas

Cómo: Cargar XML desde un archivo, cadena o secuencia (Visual Basic)

Conceptos

Introducción a LINQ en Visual Basic

Otros recursos

Manipular XML en Visual Basic

XML en Visual Basic

LINQ en Visual Basic