Compartilhar via


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:

    O Value propriedade refere-se para o primeiro elemento XML em uma 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 Axis de atributo XML.

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 a partir de um arquivo, String ou fluxo (Visual Basic)

Conceitos

Introdução ao LINQ no Visual Basic

Outros recursos

Manipulação XML no Visual Basic

XML no Visual Basic

LINQ no Visual Basic