Procedura: modificare valori letterali XML (Visual Basic)

Visual Basic offre modi pratici per modificare i valori letterali XML. È possibile aggiungere o eliminare elementi e attributi ed è anche possibile sostituire un elemento esistente con un nuovo elemento XML. In questo argomento vengono forniti diversi esempi di come modificare un valore letterale XML esistente.

Per modificare il valore di un valore letterale XML

  1. Per modificare un valore letterale XML, ottenere un riferimento al valore letterale XML e impostare la proprietà Value sul valore desiderato.

    Nell'esempio di codice seguente viene aggiornato il valore di tutti gli elementi <Prezzo> in un documento XML.

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

    Di seguito viene illustrato il codice XML di origine di esempio e il codice XML modificato da questo esempio di codice.

    XML di origine:

    <?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 modificato:

    <?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 proprietà Value fa riferimento al primo elemento XML di una raccolta. Se in una raccolta sono presenti più elementi con lo stesso nome, l'impostazione della proprietà Value influisce solo sul primo elemento dell'insieme.

Per aggiungere un attributo a un valore letterale XML

  1. Per aggiungere un attributo a un valore letterale XML, ottenere innanzitutto un riferimento al valore letterale XML. È quindi possibile aggiungere un attributo aggiungendo una nuova proprietà dell'asse degli attributi XML. È anche possibile aggiungere un nuovo oggetto XAttribute al valore letterale XML usando il metodo Add. L'esempio seguente illustra entrambe le opzioni.

    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
    

    Di seguito viene illustrato il codice XML di origine di esempio e il codice XML modificato da questo esempio di codice.

    XML di origine:

    <?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 modificato:

    <?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>
    

    Per altre informazioni sulle proprietà dell'asse degli attributi XML, vedere Proprietà dell'asse degli attributi XML.

Per aggiungere un elemento a un valore letterale XML

  1. Per aggiungere un elemento a un valore letterale XML, ottenere innanzitutto un riferimento al valore letterale XML. È quindi possibile aggiungere un nuovo oggetto XElement come ultimo sottoelemento dell'elemento usando il metodo Add. È possibile aggiungere un nuovo oggetto XElement come primo sottoelemento usando il metodo AddFirst.

    Per aggiungere un nuovo elemento in una posizione specifica rispetto ad altri sottoelementi, ottenere prima un riferimento a un sottoelemento adiacente. È quindi possibile aggiungere il nuovo oggetto XElement prima dell'elemento secondario adiacente usando il metodo AddBeforeSelf. È anche possibile aggiungere il nuovo oggetto XElement dopo l'elemento secondario adiacente usando il metodo AddAfterSelf.

    Nell'esempio seguente vengono illustrati esempi di ognuna di queste tecniche.

    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>)
    

    Di seguito viene illustrato il codice XML di origine di esempio e il codice XML modificato da questo esempio di codice.

    XML di origine:

    <?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 modificato:

    <?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>
    

Per rimuovere un elemento o un attributo da un valore letterale XML

  1. Per rimuovere un elemento o un attributo da un valore letterale XML, ottenere un riferimento all'elemento o all'attributo e chiamare il metodo Remove, come illustrato nell'esempio seguente.

    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
    

    Di seguito viene illustrato il codice XML di origine di esempio e il codice XML modificato da questo esempio di codice.

    XML di origine:

    <?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 modificato:

    <?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>
    

    Per rimuovere tutti gli elementi o gli attributi da un valore letterale XML, ottenere un riferimento al valore letterale XML e chiamare il metodo RemoveAll.

Per modificare un valore letterale XML

  1. Per modificare il nome di un elemento XML, ottenere innanzitutto un riferimento all'elemento. È quindi possibile creare un nuovo oggetto XElement con un nuovo nome e passare il nuovo oggetto XElement al metodo ReplaceWith dell'oggetto esistente XElement.

    Se l'elemento che si sostituisce dispone di sottoelementi che devono essere mantenuti, impostare il valore del nuovo oggetto XElement sulla proprietà Nodes dell'elemento esistente. Verrà impostato il valore del nuovo elemento sul codice XML interno dell'elemento esistente. In caso contrario, è possibile impostare il valore del nuovo elemento sulla proprietà Value dell'elemento esistente.

    Nell'esempio di codice seguente vengono sostituiti tutti gli elementi <Descrizione> con un elemento <Astratto>. Il contenuto dell'elemento <Descrizione> viene mantenuto nel nuovo elemento <Astratto> utilizzando la proprietà Nodes dell'oggetto <Descrizione>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
    

    Di seguito viene illustrato il codice XML di origine di esempio e il codice XML modificato da questo esempio di codice.

    XML di origine:

    <?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 modificato:

    <?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>
    

Vedi anche