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 メソッドを使用して、新しいAdd オブジェクトを 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 リテラルへの参照を取得します。 その後、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> 要素の内容は、<Description>Nodes オブジェクトの<プロパティを使用して、新しい >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>
こちらも参照ください
.NET