Cómo: Modificar literales XML (Visual Basic)
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 de eje para atributos XML (Visual Basic).
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