Visual Basic 提供了修改 XML 文本的便捷方法。 可以添加或删除元素和属性,还可以将现有元素替换为新的 XML 元素。 本主题提供了有关如何修改现有 XML 文本的几个示例。
修改 XML 文本的值
若要修改 XML 文本的值,请获取对 XML 文本的引用,并将
Value
属性设置为所需的值。下面的代码示例更新 XML 文档中所有 <Price> 元素的值。
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>< 对象的 > 属性,将 NodesDescription< 元素的内容保存在新的 >AbstractXElement 元素中。
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>