Procedure: LETTERLIJKE XML-waarden wijzigen (Visual Basic)
Visual Basic biedt handige manieren om letterlijke XML-gegevens te wijzigen. U kunt elementen en kenmerken toevoegen of verwijderen en u kunt ook een bestaand element vervangen door een nieuw XML-element. In dit onderwerp vindt u verschillende voorbeelden van het wijzigen van een bestaande LETTERLIJKE XML-code.
De waarde van een letterlijke XML-waarde wijzigen
Als u de waarde van een letterlijke XML-waarde wilt wijzigen, haalt u een verwijzing naar de XML-letterlijke waarde op en stelt u de
Value
eigenschap in op de gewenste waarde.In het volgende codevoorbeeld wordt de waarde van alle <prijselementen> in een XML-document bijgewerkt.
For Each book In From element In catalog.<Catalog>.<Book> book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00") Next
Hieronder ziet u voorbeeld van de bron-XML en het gewijzigde XML-bestand uit dit codevoorbeeld.
Bron-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>
Gewijzigde 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>
Notitie
De
Value
eigenschap verwijst naar het eerste XML-element in een verzameling. Als er meer dan één element met dezelfde naam in een verzameling is, is het instellen van deValue
eigenschap alleen van invloed op het eerste element in de verzameling.
Een kenmerk toevoegen aan een letterlijke XML-waarde
Als u een kenmerk wilt toevoegen aan een letterlijke XML-waarde, moet u eerst een verwijzing naar de letterlijke XML-waarde verkrijgen. U kunt vervolgens een kenmerk toevoegen door een nieuwe eigenschap van de XML-kenmerkas toe te voegen. U kunt ook een nieuw XAttribute object toevoegen aan de letterlijke XML-methode.Add In het volgende voorbeeld ziet u beide opties.
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
Hieronder ziet u voorbeeld van de bron-XML en het gewijzigde XML-bestand uit dit codevoorbeeld.
Bron-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>
Gewijzigde 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>
Zie de eigenschap XML-kenmerkas voor meer informatie over eigenschappen van de XML-kenmerkas.
Een element toevoegen aan een letterlijke XML-code
Als u een element wilt toevoegen aan een letterlijke XML-waarde, moet u eerst een verwijzing naar de letterlijke XML-waarde verkrijgen. Vervolgens kunt u een nieuw XElement object toevoegen als het laatste subelement van het element met behulp van de Add methode. U kunt een nieuw XElement object toevoegen als het eerste subelement met behulp van de AddFirst methode.
Als u een nieuw element wilt toevoegen op een specifieke locatie ten opzichte van andere subelementen, moet u eerst een verwijzing naar een aangrenzend subelement verkrijgen. Vervolgens kunt u het nieuwe XElement object vóór het aangrenzende subelement toevoegen met behulp van de AddBeforeSelf methode. U kunt het nieuwe XElement object ook toevoegen na het aangrenzende subelement met behulp van de AddAfterSelf methode.
In het volgende voorbeeld ziet u voorbeelden van elk van deze technieken.
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>)
Hieronder ziet u voorbeeld van de bron-XML en het gewijzigde XML-bestand uit dit codevoorbeeld.
Bron-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>
Gewijzigde 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>
Een element of kenmerk verwijderen uit een letterlijke XML-waarde
Als u een element of kenmerk uit een letterlijke XML-waarde wilt verwijderen, haalt u een verwijzing naar het element of kenmerk op en roept u de
Remove
methode aan, zoals wordt weergegeven in het volgende voorbeeld.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
Hieronder ziet u voorbeeld van de bron-XML en het gewijzigde XML-bestand uit dit codevoorbeeld.
Bron-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>
Gewijzigde 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>
Als u alle elementen of kenmerken uit een letterlijke XML-waarde wilt verwijderen, haalt u een verwijzing naar de letterlijke XML-waarde op en roept u de RemoveAll methode aan.
Een letterlijke XML-indeling wijzigen
Als u de naam van een XML-element wilt wijzigen, haalt u eerst een verwijzing naar het element op. Vervolgens kunt u een nieuw XElement object met een nieuwe naam maken en het nieuwe XElement object doorgeven aan de ReplaceWith methode van het bestaande XElement object.
Als het element dat u vervangt subelementen bevat die moeten worden behouden, stelt u de waarde van het nieuwe XElement object in op de Nodes eigenschap van het bestaande element. Hiermee wordt de waarde van het nieuwe element ingesteld op de interne XML van het bestaande element. Anders kunt u de waarde van het nieuwe element instellen op de
Value
eigenschap van het bestaande element.In het volgende codevoorbeeld worden alle <beschrijvingselementen> vervangen door een <abstract> element. De inhoud van het <element Beschrijving> blijft behouden in het nieuwe <abstracte> element met behulp van de Nodes eigenschap van het <object Beschrijving>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
Hieronder ziet u voorbeeld van de bron-XML en het gewijzigde XML-bestand uit dit codevoorbeeld.
Bron-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>
Gewijzigde 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>