Como modificar literais XML (Visual Basic)
O Visual Basic fornece maneiras convenientes de modificar literais XML. Você pode adicionar ou excluir elementos e atributos e também pode substituir um elemento existente por um novo elemento XML. Este tópico fornece vários exemplos de como modificar um literal XML existente.
Para modificar o valor de um literal XML
Para modificar o valor de um literal XML, obtenha uma referência ao literal XML e defina a
Value
propriedade como o valor desejado.O exemplo de código a seguir atualiza o valor de todos os <elementos Price> em um documento XML.
For Each book In From element In catalog.<Catalog>.<Book> book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00") Next
O exemplo a seguir mostra O XML de origem de exemplo e XML modificado deste exemplo de código.
XML de origem:
<?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>
XML modificado:
<?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
Value
propriedade refere-se ao primeiro elemento XML em uma coleção. Se houver mais de um elemento que tenha o mesmo nome em uma coleção, definir aValue
propriedade afetará apenas o primeiro elemento da coleção.
Para adicionar um atributo a um literal XML
Para adicionar um atributo a um literal XML, primeiro obtenha uma referência ao literal XML. Em seguida, você pode adicionar um atributo adicionando uma nova propriedade do eixo de atributo XML. Você também pode adicionar um novo XAttribute objeto ao literal XML usando o Add método. O exemplo abaixo mostra ambas as 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
O exemplo a seguir mostra O XML de origem de exemplo e XML modificado deste exemplo de código.
XML de origem:
<?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>
XML modificado:
<?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 obter mais informações sobre as propriedades do eixo do atributo XML, consulte a Propriedade eixo do atributo XML.
Para adicionar um elemento a um literal XML
Para adicionar um elemento a um literal XML, primeiro obtenha uma referência ao literal XML. Em seguida, você pode adicionar um novo XElement objeto como o último sub-elemento do elemento usando o Add método. Você pode adicionar um novo XElement objeto como o primeiro subconjunto usando o AddFirst método.
Para adicionar um novo elemento em um local específico em relação a outros subconjuntos, primeiro obtenha uma referência a um subconjunto adjacente. Em seguida, você pode adicionar o novo XElement objeto antes do subconjunto adjacente usando o AddBeforeSelf método. Você também pode adicionar o novo XElement objeto após o subconjunto adjacente usando o AddAfterSelf método.
O exemplo a seguir 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>)
O exemplo a seguir mostra O XML de origem de exemplo e XML modificado deste exemplo de código.
XML de origem:
<?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>
XML modificado:
<?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>
Para remover um elemento ou atributo de um literal XML
Para remover um elemento ou um atributo de um literal XML, obtenha uma referência ao elemento ou atributo e chame o
Remove
método, conforme mostrado no exemplo a seguir.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
O exemplo a seguir mostra O XML de origem de exemplo e XML modificado deste exemplo de código.
XML de origem:
<?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>
XML modificado:
<?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 literal XML, obtenha uma referência ao literal XML e chame o RemoveAll método.
Para modificar um literal XML
Para alterar o nome de um elemento XML, primeiro obtenha uma referência ao elemento. Em seguida, você pode criar um novo XElement objeto que tenha um novo nome e passar o novo XElement objeto para o ReplaceWith método do objeto existente XElement.
Se o elemento que você está substituindo tiver sub-elementos que devem ser preservados, defina o valor do novo XElement objeto como a Nodes propriedade do elemento existente. Isso definirá o valor do novo elemento para o XML interno do elemento existente. Caso contrário, você pode definir o valor do novo elemento para a
Value
propriedade do elemento existente.O exemplo de código a seguir substitui todos os <elementos Descrição> por um <elemento Abstract>. O conteúdo do elemento <Description> é preservado no novo elemento <Abstract> usando a Nodes propriedade 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
O exemplo a seguir mostra O XML de origem de exemplo e XML modificado deste exemplo de código.
XML de origem:
<?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>
XML modificado:
<?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>