Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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> заменяются элементом <Abstract>. Содержимое элемента <Description> сохраняется в новом элементе <Abstract> с помощью свойства Nodes объекта <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
Приведены примеры исходного 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>