Como: modificar literais XML (Visual Basic)
O Visual Basic tem meios convenientes de modificar XML literais.Você pode adicionar ou deletar elementos, e você pode também substituir um elemento existente por um novo elemento XML.Este tópico fornece vários exemplos de como modificar um XML literal existente.
Modificar o valor de um XML literal.
Para modificar o valor de um XML literal, obtenha uma referência para o XML literal e defina a propriedade Value com o valor desejado.
O seguinte exemplo de código atualiza o valor de todos os elementos <Price> num documento XML.
For Each book In From element In catalog.<Catalog>.<Book> book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00") Next
A seguir temos um trecho de códigos XML e de XML modificado deste exemplo de código.
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>
Observação A propriedade Value se refere ao primeiro elemento XML numa coleção.Se há mais de um elemento que tenha o mesmo nome numa coleção, definir a propriedade Value afeta apenas o primeiro elemento na coleção.
Adicionar um atributo a um XML literal.
Para adicionar um atributo a um XML literal, primeiro obtenha uma referência ao XML literal.Você pode então adicionar um atributo adicionando uma nova propriedade eixo de atributo XML.Você pode também adicionar um novo objeto XAttribute ao XML literal usando o método Add.O exemplo a seguir mostra ambas opções.
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 seguir temos um trecho de códigos XML e de XML modificado deste exemplo de código.
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 mais informações sobre propriedades de eixos de atributos XML, consulte: Propriedade de eixo de atributo XML (Visual Basic).
Adicionar um elemento a um XML literal.
Para adicionar um elemento a um XML literal, primeiro obtenha uma referência ao XML literal.Você pode então adicionar um novo objeto XElement como o último subelemento usando o método Add.Você pode adicionar um novo objeto XElement como o primeiro subelemento usando o método AddFirst.
Para adicionar um novo elemento num localização específica relativa a outros subelementos, primeiro obtenha uma referência a um subelemento adjacente.Você pode adicionar o novo objeto XElement antes do subelemento adjacente usando o método AddBeforeSelf.ADICVocê pode também adicionar o novo objeto XElement depois do subelemento adjacente usando o método AddAfterSelf.
O seguinte trecho mostra exemplos de cada uma dessas 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 seguir temos um trecho de códigos XML e de XML modificado deste exemplo de código.
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>
Remover um elemento ou atributo de um XML literal.
Para remover um elemento ou atributo de um XML literal, obtenha uma referência ao elemento ou atributo e chame o método Remove, como mostrado no exemplo seguinte.
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 seguir temos um trecho de códigos XML e de XML modificado deste exemplo de código.
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 remover todos os elementos ou atributos de um XML literal, obtenha uma referência ao XML literal e chame o método RemoveAll.
Modificar um XML literal.
Para mudar o nome de um elemento XML, primeiro obtenha uma referência ao elemento.Você pode então criar um novo objeto XElement que tenha um novo nome e passe o objeto XElement para o método ReplaceWith do objeto XElement existente.
Se o elemento que você está substituindo tem subelementos que devem ser mantidos, defina o valor do novo objeto XElement para a propriedade Nodes do elemento existente.Isto vai definir o valor do novo elemento para o XML interno do elemento existente.De qualquer maneira, você pode definir o valor do novo elemento para a propriedade Value do elemento existente.
O seguinte exemplo de código substiui todos os elementos <Description> com um elemento <Abstract>.O conteúdo do elemento <Description> é mantido no novo elemento <Abstract> usando a propriedade Nodes do objeto <Description> XElement.
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 seguir temos um trecho de códigos XML e de XML modificado deste exemplo de código.
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>
Consulte também
Tarefas
Como: carregar XML de um arquivo, uma seqüência de caracteres ou um fluxo (Visual Basic)
Conceitos
Introdução ao LINQ em Visual Basic