方法: XML リテラルの変更 (Visual Basic)

Visual Basic には、XML リテラルを変更する便利な方法が用意されています。 要素と属性を追加したり削除したりでき、既存の要素を新しい XML 要素に置き換えることもできます。 このトピックでは、既存の XML リテラルを変更する方法の例をいくつか紹介します。

XML リテラルの値を変更するには

  1. 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>
    

    Note

    Value プロパティを使用して、コレクション内の最初の XML 要素を参照します。 コレクション内に同じ名前の要素が複数ある場合、Value プロパティの設定は、コレクション内の最初の要素にのみ影響します。

XML リテラルに属性を追加するには

  1. 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 リテラルに要素を追加するには

  1. 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 リテラルから要素または属性を削除するには

  1. 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 リテラルを変更するには

  1. 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 の例を示します。

    ソースの 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>
    

関連項目