如何:修改 XML 常值 (Visual Basic)
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 屬性座標軸屬性來新增屬性。 您也可以使用 Add 方法,將新的 XAttribute 物件新增至 XML 常值。 下列程式碼顯示這兩個選項。
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 常值的參考。 然後,您可以使用 Add 方法,將新的 XElement 物件新增為元素的最後一個子元素。 您可以使用 AddFirst 方法,將新的 XElement 物件新增為第一個子元素。
若要在特定位置中新增相對於其他子元素的新元素,請先取得相鄰子元素的參考。 接著,您可以使用 AddBeforeSelf 方法,在相鄰子元素之前新增 XElement 物件。 接著,您可以使用 AddAfterSelf 方法,在相鄰子元素之後新增 XElement 物件。
下列示範這些技巧的範例。
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 物件傳遞至現有 XElement 物件的 ReplaceWith 方法。
若您要取代的元素具有必須保留的子元素,請將新 XElement 物件的值設定為現有元素的 Nodes 屬性。 這會將新元素的值設定為現有元素的內部 XML。 否則,您可以將新元素的值設定為現有元素的
Value
屬性。下列程式碼範例會以 <Abstract> 元素取代所有 <Description> 元素。 <Description> 元素的內容會使用 <Description>XElement 物件的 Nodes 屬性,在新的 <Abstract> 元素中保留。
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>