Porady: modyfikowanie literałów XML (Visual Basic)
Język Visual Basic zapewnia wygodne sposoby modyfikowania literałów XML. Możesz dodawać lub usuwać elementy i atrybuty, a także zastąpić istniejący element nowym elementem XML. Ten temat zawiera kilka przykładów modyfikowania istniejącego literału XML.
Aby zmodyfikować wartość literału XML
Aby zmodyfikować wartość literału XML, uzyskaj odwołanie do literału XML i ustaw
Value
właściwość na żądaną wartość.Poniższy przykład kodu aktualizuje wartość wszystkich <elementów Price> w dokumencie XML.
For Each book In From element In catalog.<Catalog>.<Book> book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00") Next
Poniżej przedstawiono przykładowy źródłowy kod XML i zmodyfikowany kod XML z tego przykładu kodu.
Źródłowy kod 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>
Zmodyfikowany kod 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>
Uwaga
Właściwość
Value
odwołuje się do pierwszego elementu XML w kolekcji. Jeśli istnieje więcej niż jeden element o tej samej nazwie w kolekcji, ustawienieValue
właściwości wpływa tylko na pierwszy element w kolekcji.
Aby dodać atrybut do literału XML
Aby dodać atrybut do literału XML, najpierw uzyskaj odwołanie do literału XML. Następnie możesz dodać atrybut, dodając nową właściwość osi atrybutu XML. Możesz również dodać nowy XAttribute obiekt do literału XML przy użyciu Add metody . W poniższym przykładzie przedstawiono obie opcje.
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
Poniżej przedstawiono przykładowy źródłowy kod XML i zmodyfikowany kod XML z tego przykładu kodu.
Źródłowy kod 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>
Zmodyfikowany kod 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>
Aby uzyskać więcej informacji na temat właściwości osi atrybutów XML, zobacz Właściwość osi atrybutu XML.
Aby dodać element do literału XML
Aby dodać element do literału XML, najpierw uzyskaj odwołanie do literału XML. Następnie możesz dodać nowy XElement obiekt jako ostatni element podrzędny elementu przy użyciu Add metody . Nowy obiekt można dodać XElement jako pierwszy element podrzędny AddFirst przy użyciu metody .
Aby dodać nowy element w określonej lokalizacji względem innych elementów podrzędnych, najpierw uzyskaj odwołanie do sąsiadującego elementu podrzędnego. Następnie można dodać nowy XElement obiekt przed sąsiednim elementem podrzędnym przy użyciu AddBeforeSelf metody . Możesz również dodać nowy XElement obiekt po sąsiednim elemecie podrzędnym przy użyciu AddAfterSelf metody .
W poniższym przykładzie przedstawiono przykłady każdej z tych technik.
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>)
Poniżej przedstawiono przykładowy źródłowy kod XML i zmodyfikowany kod XML z tego przykładu kodu.
Źródłowy kod 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>
Zmodyfikowany kod 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>
Aby usunąć element lub atrybut z literału XML
Aby usunąć element lub atrybut z literału XML, uzyskaj odwołanie do elementu lub atrybutu i wywołaj
Remove
metodę, jak pokazano w poniższym przykładzie.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
Poniżej przedstawiono przykładowy źródłowy kod XML i zmodyfikowany kod XML z tego przykładu kodu.
Źródłowy kod 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>
Zmodyfikowany kod 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>
Aby usunąć wszystkie elementy lub atrybuty z literału XML, uzyskaj odwołanie do literału XML i wywołaj metodę RemoveAll .
Aby zmodyfikować literał XML
Aby zmienić nazwę elementu XML, najpierw uzyskaj odwołanie do elementu. Następnie można utworzyć nowy obiekt o nowej XElement nazwie i przekazać nowy XElement obiekt do ReplaceWith metody istniejącego XElement obiektu.
Jeśli zastępowany element zawiera elementy podrzędne, które należy zachować, ustaw wartość nowego XElement obiektu na Nodes właściwość istniejącego elementu. Spowoduje to ustawienie wartości nowego elementu na wewnętrzny kod XML istniejącego elementu. W przeciwnym razie można ustawić wartość nowego elementu na
Value
właściwość istniejącego elementu.Poniższy przykład kodu zastępuje wszystkie <elementy Description> elementem <Abstract> . Zawartość elementu Description jest zachowywana w nowym <elemecie Abstrakcyjnym> przy użyciu Nodes właściwości <obiektu 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
Poniżej przedstawiono przykładowy źródłowy kod XML i zmodyfikowany kod XML z tego przykładu kodu.
Źródłowy kod 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>
Zmodyfikowany kod 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>