Поделиться через


Практическое руководство. Изменение 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 из кода этого примера.

    Source 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>
    
    Modified 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. К XML-литералу можно также добавить новый объект XAttribute, воспользовавшись методом 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 из кода этого примера.

    Source 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>
    
    Modified 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 (Visual Basic).

Добавление элемента к 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 из кода этого примера.

    Source 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>
    
    Modified 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 из кода этого примера.

    Source 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>
    
    Modified 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 объекта 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 из кода этого примера.

    Source 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>
    
    Modified 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>
    

См. также

Задачи

Практическое руководство. Загрузка XML-кода из файла, строки или потока (Visual Basic)

Основные понятия

Знакомство с LINQ в Visual Basic

Другие ресурсы

Обработка XML в Visual Basic

XML в Visual Basic

LINQ в Visual Basic