方法 : 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>
    
    Bb918016.alert_note(ja-jp,VS.90).gifメモ :

    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)

概念

Visual Basic における LINQ の概要

その他の技術情報

Visual Basic での XML の操作

XML (Visual Basic)

LINQ (Visual Basic)