Практическое руководство. Изменение XML-литералов (Visual Basic)
Visual Basic предоставляет удобные способы изменения XML-литерала. Вы можете добавлять или удалять элементы и атрибуты, а также заменить существующий элемент новым XML-элементом. В этом разделе представлено несколько примеров изменения существующего XML-литерала.
Изменение значения XML-литерала
Чтобы изменить значение XML-литерала, получите ссылку на XML-литерал и задайте
Value
свойству требуемое значение.В следующем примере кода обновляется значение всех <элементов Price> в XML-документе.
For Each book In From element In catalog.<Catalog>.<Book> book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00") Next
Ниже показан пример исходного XML и изменен XML из этого примера кода.
Исходный 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>
Изменен 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>
Примечание.
Свойство
Value
ссылается на первый XML-элемент в коллекции. Если в коллекции имеется несколько элементов с одинаковым именем, заданиеValue
свойства влияет только на первый элемент коллекции.
Добавление атрибута в XML-литерал
Чтобы добавить атрибут в XML-литерал, сначала получите ссылку на XML-литерал. Затем можно добавить атрибут, добавив новое свойство оси атрибута XML. Можно также добавить новый XAttribute объект в XML-литерал с помощью Add метода. В следующем примере показаны оба варианта.
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
Ниже показан пример исходного XML и изменен XML из этого примера кода.
Исходный 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>
Изменен 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>
Дополнительные сведения о свойствах оси атрибутов XML см. в разделе "Свойство оси атрибутов XML".
Добавление элемента в XML-литерал
Чтобы добавить элемент в XML-литерал, сначала получите ссылку на XML-литерал. Затем можно добавить новый XElement объект в качестве последнего подэлеза элемента элемента с помощью Add метода. С помощью метода можно добавить новый XElement объект в качестве первого подэлея AddFirst .
Чтобы добавить новый элемент в определенное расположение относительно других вложенных элементов, сначала получите ссылку на смежный вложенный элемент. Затем можно добавить новый XElement объект перед соседним вложенным элементом AddBeforeSelf с помощью метода. Вы также можете добавить новый XElement объект после соседнего подэлеза AddAfterSelf с помощью метода.
В следующем примере показаны примеры каждого из этих методов.
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>)
Ниже показан пример исходного XML и изменен XML из этого примера кода.
Исходный 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>
Изменен 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>
Удаление элемента или атрибута из XML-литерала
Чтобы удалить элемент или атрибут из XML-литерала, получите ссылку на элемент или атрибут и вызовите
Remove
метод, как показано в следующем примере.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
Ниже показан пример исходного XML и изменен XML из этого примера кода.
Исходный 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>
Изменен 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>
Чтобы удалить все элементы или атрибуты из XML-литерала, получите ссылку на XML-литерал и вызовите RemoveAll метод.
Изменение XML-литерала
Чтобы изменить имя XML-элемента, сначала получите ссылку на элемент. Затем можно создать новый XElement объект с новым именем и передать новый XElement объект ReplaceWith методу существующего XElement объекта.
Если элемент, который вы заменяете, содержит вложенные элементы, которые необходимо сохранить, задайте значение нового XElement объекта Nodes свойству существующего элемента. При этом будет задано значение нового элемента внутренним XML существующего элемента. В противном случае можно задать значение нового элемента
Value
свойству существующего элемента.В следующем примере кода все <элементы Description> заменяются абстрактным> элементом<. Содержимое элемента Description> сохраняется в новом <элементе Abstract с помощью Nodes свойства <объекта DescriptionXElement>>.<
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
Ниже показан пример исходного XML и изменен XML из этого примера кода.
Исходный 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>
Изменен 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>