方法 : XML リテラルを変更する (Visual Basic)
更新 : 2007 年 11 月
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 を次に示します。
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 メソッドを使用することでも実行できます。この 2 つの方法の使用例を次に示します。
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 属性軸プロパティ」を参照してください。
XML リテラルに要素を追加するには
XML リテラルに要素を追加するには、先に XML リテラルへの参照を取得します。次に、Add メソッドを使用して、新しい XElement オブジェクトを要素のサブ要素として追加できます。新しい XElement オブジェクトは、AddFirst メソッドを使用すると、最初のサブ要素として追加できます。
新しい要素を、他のサブ要素を基準とする特定の位置に追加するには、隣接するサブ要素への参照を先に取得します。次に、AddBeforeSelf メソッドを使用して、隣接するサブ要素の前に新しい XElement オブジェクトを追加できます。新しい 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 オブジェクトを、既存の XElement オブジェクトの ReplaceWith メソッドに渡します。
置換する要素に、保持する必要があるサブ要素がある場合は、新しい XElement オブジェクトの値に、既存の要素の Nodes プロパティを設定します。これにより、新しい要素の値に、既存の要素の内部 XML が設定されます。または、新しい要素の値に、既存の要素の Value プロパティを設定できます。
次のコード例では、すべての <Description> 要素を <Abstract> 要素に置換します。<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 を次に示します。
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)